🚀 注文機能
注文機能は、Nodeblocksアプリケーションで注文管理操作用の完全な、事前構成された機能を提供します。これらの機能はスキーマ、ルート、ハンドラーを組み合わせて、注文CRUD操作、検索、ライフサイクル管理用のすぐに使用できるAPIエンドポイントを作成します。
🎯 概要
注文機能は以下の目的で設計されています:
- 完全な注文管理を提供 - 完全なCRUD操作を含む
- 注文ライフサイクルをサポート - 作成から完了までの管理
- 検証とルーティングを含む - セキュアな注文操作のため
- フィルタリングとページネーションをサポート - 注文リスト用
- 注文アイテムを処理 - 合計計算を含む
📋 機能構造
各注文機能は一貫した構成パターンに従います:
- スキーマ: 注文入力データとパラメータを検証
- ルート: 注文ハンドラーを含むHTTPエンドポイントを提供
- 構成:
compose関数を使用してスキーマとルートを組み合わせ
🔧 利用可能な注文機能
createOrderFeature
スキーマ検証とルーティングを含む注文作成機能。
目的: 完全な検証を含む注文作成を処理します
構成:
- スキーマ:
createOrderSchema- アイテム配列、合計、オプションフィールドを検証 - ルート:
createOrderRoute- POST/orders- 作成ハンドラー付き
使用例:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.createOrderFeature, [{ dataStores: db }])));
APIエンドポイント: POST /api/orders
updateOrderFeature
スキーマ検証とルーティングを含む注文更新機能。
目的: 適切な検証を含む注文情報を変更します
構成:
- スキーマ:
updateOrderSchema- 部分的な注文プロパティを検証 - ルート:
updateOrderRoute- PATCH/orders/:orderId- 更新ハンドラー付き
使用例:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.updateOrderFeature, [{ dataStores: db }])));
APIエンドポイント: PATCH /api/orders/:orderId
getOrderFeature
個別の注文データを取得するための注文取得機能。
目的: 適切な検証を含む注文情報を取得します
構成:
- スキーマ:
getOrderSchema- パスパラメータを検証 - ルート:
getOrderRoute- GET/orders/:orderId- 取得ハンドラー付き
使用例:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.getOrderFeature, [{ dataStores: db }])));
APIエンドポイント: GET /api/orders/:orderId
findOrdersFeature
フィルタリングとページネーションを含む注文検索機能。
目的: 検索機能を含む注文リストを提供します
構成:
- スキーマ:
findOrdersSchema- フィルタリング用のクエリパラメータを検証 - ルート:
findOrdersRoute- GET/orders- 検索とページネーション付き
使用例:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.findOrdersFeature, [{ dataStores: db }])));
APIエンドポイント: GET /api/orders
deleteOrderFeature
ルーティングを含む注文削除機能。
目的: アクセス制御とクリーンアップを含む注文を削除します
構成:
- スキーマ:
deleteOrderSchema- パスパラメータを検証 - ルート:
deleteOrderRoute- DELETE/orders/:orderId- 削除ハンドラー付き
使用例:
import { features } from '@nodeblocks/backend-sdk';
// With database configuration
app.use('/api', defService(partial(features.deleteOrderFeature, [{ dataStores: db }])));
APIエンドポイント: DELETE /api/orders/:orderId
findOrdersByOrganizationIdFeature
スキーマ検証とルーティングを含む組織IDによる注文取得機能。
目的: フィルタリング、ページネーション、データ正規化を含む特定の組織にスコープされた注文をリストします
構成:
- スキーマ:
findByOrganizationIdSchema- 組織IDパスパラメータとページネーションを検証 - ルート:
findOrdersByOrganizationIdRoute- GET/orders/organizations/:organizationId- 組織固有のリストハンドラー付き
使用例:
import { features } from '@nodeblocks/backend-sdk';
// Direct usage:
app.use('/api', defService(findOrdersByOrganizationIdFeature));
// With database configuration:
app.use('/api', defService(partial(findOrdersByOrganizationIdFeature, [{ dataStores: db }])));
APIエンドポイント: GET /api/orders/organizations/:organizationId
リクエストパラメータ:
- パスパラメータ:
organizationId(required): 注文を取得する対象組織ID
- クエリパラメータ:
page(optional): ページネーションのページ番号(デフォルト: 1)limit(optional): ページあたりの注文数(デフォルト: 10)
レスポンス(200 - 成功):
{
"data": [
{
"id": "order-123",
"organizationId": "org-456",
"currency": "USD",
"status": "confirmed",
"createdAt": "2024-01-01T00:00:00.000Z",
"updatedAt": "2024-01-01T00:00:00.000Z"
}
],
"metadata": {
"pagination": {
"hasNext": false,
"hasPrev": false,
"limit": 10,
"page": 1,
"total": 1,
"totalPages": 1
}
}
}
認可:
- 認証が必要
hasOrgRole(['owner', 'admin', 'member'])経由で'owner'、'admin'、または'member'ロールを持つ組織メンバーに制限
エラーレスポンス:
401: Unauthorized - 無効または欠落している認証トークン403: Forbidden - ユーザーが組織アクセスを欠いているか、ロール権限が不足500: Internal Server Error - データベースまたは正規化エラー
主な機能:
- 組織スコープ: 注文は組織メンバーシップで自動的にフィルタリングされます
- ロールベースアクセス: 組織の所有者、管理者、メンバーへのアクセスを制限
- ページネーションサポート: 大きな注文コレクション用のメタデータを含む完全なページネーション
- データ正規化: クリーンなAPIレスポンス用の自動ドキュメント正規化