🔍 注文スキーマブロック
注文スキーマブロックは、Nodeblocksアプリケーションにおける注文データ検証のためのJSONスキーマ定義を提供します。これらのスキーマは、データ整合性を確保し、注文関連のAPIエンドポイントの明確な契約を提供します。
🎯 概要
注文スキーマブロックは以下を目的として設計されています:
- 処理前の注文データの検証
- 品目と価格設定による複雑な注文構造のサポート
- 複数通貨と税金計算の処理
- 様々なライフサイクル状態を通じた注文ステータスの追跡
- 注文検索とフィルタリング機能の実現
- 組織とユーザー関連付けのサポート
📋 注文スキーマ種類
ベース注文スキーマ
他のスキーマの基盤として使用されるコア注文構造。
注文作成スキーマ
必須フィールド検証による注文作成のためのスキーマ。
注文更新スキーマ
オプションフィールド検証による注文変更のためのスキーマ。
注文クエリスキーマ
注文フィルタリングとページネーションパラメータのためのスキーマ。
🔧 利用可能な注文スキーマ
orderSchema
注文データの構造を定義するベース注文スキーマ。
目的: 品目付き注文データの構造を定義
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(ベーススキーマ)
- 追加プロパティ:
false
(厳密な検証) - プロパティ:
currency?: string
- 注文通貨items?: Array<{productId: string, quantity: number, price: number}>
- 注文品目organizationId?: string
- 組織ID(UUIDフォーマット)status?: string
- 注文ステータスsubtotal?: number
- 注文小計(最小0)tax?: number
- 税額(最小0)total?: number
- 合計金額(最小0)userId?: string
- ユーザーID(UUIDフォーマット)
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { orderSchema } = schemas;
const orderSchema = orderSchema({});
const validate = ajv.compile(orderSchema.schemas as SchemaDefinition);
const isValid = validate({
currency: 'JPY',
items: [{ productId: '123e4567-e89b-12d3-a456-426614174000', quantity: 2, price: 2999 }],
total: 5998
});
createOrderSchema
新しい注文のための必須フィールド付き注文作成スキーマ。
目的: 作成時の注文データを検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
items
,total
,currency
- オプションフィールド:
userId
,organizationId
,status
,subtotal
,tax
- 追加プロパティ:
false
(厳密な検証) - コンテンツタイプ:
application/json
- リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { createOrderSchema } = schemas;
const orderSchema = createOrderSchema({});
const validate = ajv.compile(orderSchema.schemas as SchemaDefinition);
const isValid = validate({
currency: 'JPY',
items: [
{ productId: '123e4567-e89b-12d3-a456-426614174000', quantity: 1, price: 1500 },
{ productId: '123e4567-e89b-12d3-a456-426614174001', quantity: 2, price: 2000 }
],
subtotal: 5500,
tax: 550,
total: 6050
});
updateOrderSchema
注文変更のための注文更新スキーマ。
目的: 部分的な注文更新を検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(すべてオプション)
- オプションフィールド:
status
,items
,total
,currency
,subtotal
,tax
- 追加プロパティ:
false
(厳密な検証) - パラメータ:
orderId
(パスパラメータ)
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { updateOrderSchema } = schemas;
const orderSchema = updateOrderSchema({});
const validate = ajv.compile(orderSchema.schemas as SchemaDefinition);
const isValid = validate({
status: 'shipped',
total: 6500
});
getOrderSchema
単一注文取得のための注文取得スキーマ。
目的: 特定注文取得リクエストを検証
スキーマ詳細:
- パラメータ:
orderId
(パスパラメータ) - 目的: 特定注文取得リクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { getOrderSchema } = schemas;
const orderSchema = getOrderSchema({});
const validate = ajv.compile(orderSchema.schemas as SchemaDefinition);
const isValid = validate({
orderId: 'order123'
});
deleteOrderSchema
注文削除のための注文削除スキーマ。
目的: 特定注文削除リクエストを検証
スキーマ詳細:
- パラメータ:
orderId
(パスパラメータ) - 目的: 特定注文削除リクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteOrderSchema } = schemas;
const orderSchema = deleteOrderSchema({});
const validate = ajv.compile(orderSchema.schemas as SchemaDefinition);
const isValid = validate({
orderId: 'order123'
});
findOrdersSchema
フィルタリングとページネーション付き注文検索のための注文検索スキーマ。
目的: 注文の検索とページングリクエストを検証
スキーマ詳細:
- クエリパラメータ:
currency?: string
- 通貨でのフィルタorganizationId?: string
- 組織でのフィルタstatus?: string
- ステータスでのフィルタsubtotal?: number
- 小計でのフィルタ(最小0)tax?: number
- 税額でのフィルタ(最小0)total?: number
- 合計金額でのフィルタ(最小0)userId?: string
- ユーザーでのフィルタpage?: number
- ページネーションのページ番号limit?: number
- ページネーションの制限
- 目的: 注文の検索とページングリクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { findOrdersSchema } = schemas;
const ordersSchema = findOrdersSchema({});
const validate = ajv.compile(ordersSchema.schemas as SchemaDefinition);
const isValid = validate({
status: 'pending',
currency: 'JPY',
page: 1,
limit: 10
});