📦 注文ハンドラーブロック
注文ハンドラーブロックは、Nodeblocksアプリケーションにおける注文管理操作のためのコアビジネスロジック関数を提供します。これらのハンドラーは、注文データベース操作、データ変換、レスポンスフォーマッティングの共通パターンをカプセル化します。
🎯 概要
注文ハンドラーブロックは以下を目的として設計されています:
- 再利用可能な関数での注文ビジネスロジックのカプセル化
- 適切なエラー管理による注文データベース操作の処理
- 異なるフォーマット間での注文データの変換
- TypeScript統合による型安全性の確保
- 他の注文ブロックとのコンポジションのサポート
📋 注文ハンドラー種類
注文非同期ハンドラー
非同期注文操作(データベース呼び出し、APIリクエストなど)を実行する関数。
注文同期ハンドラー
同期注文操作(データ変換、検証など)を実行する関数。
注文ターミネーターハンドラー
最終的な注文レスポンスをフォーマットして返す関数。
🔧 利用可能な注文ハンドラー
createOrder
検証とエンティティ管理により、データベースに新しい注文を作成します。
目的: 検証とエンティティ管理による注文作成を処理
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- orderIdを含む成功またはエラー
使用例:
// コンポジションでの使用:
compose(createOrder, terminator);
主要機能:
- リクエストボディが存在し空でないことを検証
- タイムスタンプとIDを含むベースエンティティを作成
- データベースに注文を挿入
- 成功時にorderIdを返す
- データベースエラーを適切に処理
updateOrder
IDにより既存の注文を更新し、検証と競合検出を行います。
目的: 検証と競合検出による注文更新を処理
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- orderIdを含む成功またはエラー
使用例:
// コンポジションでの使用:
compose(updateOrder, terminator);
主要機能:
- orderIdが提供されていることを検証
- リクエストボディが存在し空でないことを検証
- タイムスタンプを含むベースエンティティを更新
- 更新前に注文が存在することを確認
- 成功時にorderIdを返す
- 見つからない場合と更新失敗を処理
getOrderById
存在検証により、IDで単一の注文を取得します。
目的: 存在検証による注文データの取得
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- orderGroupを含む成功またはエラー
使用例:
// コンポジションでの使用:
compose(getOrderById, normalizeTerminator);
主要機能:
- orderIdが提供されていることを検証
- データベースでIDによる注文を検索
- 注文が見つからない場合は404を返す
- 成功時にorderGroupデータを返す
- データベースエラーを適切に処理
findOrders
オプションのフィルタリングサポートで複数の注文を検索します。
目的: フィルターサポートによる注文のクエリを処理
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- orderGroups配列を含む成功またはエラー
使用例:
// コンポジションでの使用:
compose(findOrders, listTerminator);
主要機能:
- リクエストクエリからのオプションフィルターを受け入れ
- フィルターが提供されない場合は全注文を返す
- orderGroupsの配列を返す
- データベースエラーを適切に処理
deleteOrder
安全な削除と存在検証により、IDで注文を削除します。
目的: 存在検証による注文の安全な削除を処理
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- 削除フラグを含む成功またはエラー
使用例:
// コンポジションでの使用:
compose(deleteOrder, deleteTerminator);
主要機能:
- orderIdが提供されていることを検証
- データベースからIDによる注文を削除
- 注文が見つからない場合は404を返す
- 削除確認フラグを返す
- データベースエラーを適切に処理
ターミネーターハンドラー
createOrderTerminator
適切なレスポンスフォーマッティングで注文作成を終了します。
目的: 201ステータスで成功した注文作成レスポンスをフォーマット
パラメータ:
result
:Result<RouteHandlerPayload, Error>
戻り値: データとstatusCodeを含むフォーマット済みレスポンスオブジェクト
使用例:
// コンポジションでの使用:
compose(createOrder, createOrderTerminator);
主要機能:
- 結果がエラーの場合はエラーをスロー
- コンテキストにorderGroupが存在することを検証
- データベース_idフィールドを削除
- 作成に対して201ステータスコードを返す
normalizeOrderTerminator
データベース固有フィールドを削除して注文データを正規化します。
目的: APIレスポンス用の注文データをクリーンアップ
パラメータ:
result
:Result<RouteHandlerPayload, Error>
戻り値: 正規化された注文オブジェクト
使用例:
// コンポジションでの使用:
compose(getOrderById, normalizeOrderTerminator);
主要機能:
- 結果がエラーの場合はエラーをスロー
- コンテキストにorderGroupが存在することを検証
- データベース_idフィールドを削除
- クリーンな注文オブジェクトを返す
normalizeOrdersListTerminator
各項目からデータベース固有フィールドを削除して注文リストを正規化します。
目的: APIレスポンス用の注文配列データをクリーンアップ
パラメータ:
result
:Result<RouteHandlerPayload, Error>
戻り値: 正規化された注文オブジェクトの配列
使用例:
// コンポジションでの使用:
compose(findOrders, normalizeOrdersListTerminator);
主要機能:
- 結果がエラーの場合はエラーをスロー
- orderGroups配列をマップ
- 各注文からデータベース_idフィールドを削除
- クリーンな注文オブジェクトの配列を返す
deleteOrderTerminator
適切なステータスコードで注文削除を終了します。
目的: 204ステータスで成功した削除レスポンスをフォーマット
パラメータ:
result
:Result<RouteHandlerPayload, Error>
戻り値: 204 statusCodeを含むレスポンスオブジェクト
使用例:
// コンポジションでの使用:
compose(deleteOrder, deleteOrderTerminator);
主要機能:
- 結果がエラーの場合はエラーをスロー
- 削除フラグが存在することを検証
- 成功した削除に対して204ステータスコードを返す
🔗 関連ドキュメント
- 注文スキーマブロック - 注文データ検証と契約
- 注文ルートブロック - 注文HTTPエンドポイント定義
- 注文フィーチャーブロック - 注文コンポーズ機能
- 注文バリデーターブロック - 注文検証関数