🛍️ 商品ハンドラーブロック
商品ハンドラーブロックは、Nodeblocksアプリケーションにおける商品管理操作のためのコアビジネスロジック関数を提供します。これらのハンドラーは、商品データベース操作、データ変換、レスポンスフォーマッティングの共通パターンをカプセル化します。
🎯 概要
商品ハンドラーブロックは以下を目的として設計されています:
- 再利用可能な関数での商品ビジネスロジックのカプセル化
- 適切なエラー管理による商品データベース操作の処理
- 異なるフォーマット間での商品データの変換
- TypeScript統合による型安全性の確保
- 他の商品ブロックとのコンポジションのサポート
📋 商品ハンドラー種類
商品非同期ハンドラー
非同期商品操作(データベース呼び出し、APIリクエストなど)を実行する関数。
商品同期ハンドラー
同期商品操作(データ変換、検証など)を実行する関数。
商品ターミネーターハンドラー
最終的な商品レスポンスをフォーマットして返す関数。
🔧 利用可能な商品ハンドラー
createProduct
検証とエンティティ管理により、データベースに新しい商品を作成します。
目的: 検証とエンティティ管理による単一商品作成を処理
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- productIdを含む成功またはエラー
使用例:
// コンポジションでの使用:
compose(createProduct, terminator);
主要機能:
- リクエストボディの存在を検証
- メタデータ付きベースエンティティを作成
- 成功時にproductIdを返す
- データベース挿入エラーを処理
createProductBatch
単一のバッチ操作で複数の商品を作成します。
目的: 検証による複数商品のバッチ作成を処理
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- productIds配列を含む成功またはエラー
使用例:
// コンポジションでの使用:
compose(productBatchSchema, validateBatch, createProductBatch, terminator);
主要機能:
- 配列入力を検証
- 各商品のベースエンティティを作成
- productIDsの配列を返す
- バッチ挿入エラーを処理
getProductById
存在検証により、IDで単一の商品を取得します。
目的: 存在検証による商品データの取得
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- productを含む成功またはエラー
使用例:
compose(getProductById, normalizeTerminator);
主要機能:
- productIdが提供されていることを検証
- データベースでIDによる商品を検索
- 商品が見つからない場合は404を返す
- 成功時に商品データを返す
- データベースエラーを適切に処理
findProducts
オプションのフィルタリングサポートで複数の商品を検索します。
目的: フィルターサポートによる商品のクエリを処理
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- products配列を含む成功またはエラー
使用例:
compose(findProducts, listTerminator);
主要機能:
- リクエストクエリからのオプションフィルターを受け入れ
- フィルターが提供されない場合は全商品を返す
- productsの配列を返す
- データベースエラーを適切に処理
getProductsByIds
単一操作で複数の商品をIDにより取得します。
目的: 単一操作で複数の商品を取得し、存在検証を行う
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- products配列を含む成功またはエラー
使用例:
// コンポジションでの使用:
compose(getProductsByIds, listTerminator);
主要機能:
- productIDs配列を検証
- MongoDB
$in
演算子を使用して効率的に取得 - productsの配列を返す
- 空の結果を処理
updateProduct
検証と競合検出により、IDで既存の商品を更新します。
目的: 検証と競合検出による単一商品の更新を処理
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- 更新結果を含む成功またはエラー
使用例:
// コンポジションでの使用:
compose(updateProduct, terminator);
主要機能:
- productIdとリクエストボディを検証
- 更新前に商品の存在を確認
- ベースエンティティのメタデータを更新
- 更新操作の結果を返す
updateProductBatch
単一のバッチ操作で複数の商品を更新します。
目的: 検証による複数商品のバッチ更新を処理
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- productIdsを含む成功またはエラー
使用例:
// コンポジションでの使用:
compose(updateProductBatch, terminator);
主要機能:
- productIDs配列と更新データを検証
- MongoDB
$in
演算子を使用してバッチ更新 - 全商品のベースエンティティメタデータを更新
- 更新されたproductIDsの配列を返す
copyProduct
既存の商品のコピーを作成し、新しいエンティティを作成します。
目的: 新しいエンティティ作成による商品複製を処理
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- 新しいproductIdを含む成功またはエラー
使用例:
// コンポジションでの使用:
compose(copyProduct, terminator);
主要機能:
- ソース商品の存在を検証
- データベース固有フィールド(
_id
)を削除 - コピーの新しいベースエンティティを作成
- 新しいproductIdを返す
copyProductBatch
バッチ操作で複数の商品のコピーを作成します。
目的: 新しいエンティティ作成による複数商品のバッチ複製を処理
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- 新しいproductIds配列を含む成功またはエラー
使用例:
// コンポジションでの使用:
compose(copyProductBatch, terminator);
主要機能:
- ソース商品の存在を検証
- 全商品からデータベース固有フィールドを削除
- 全コピーの新しいベースエンティティを作成
- 新しいproductIDsの配列を返す
deleteProductBatch
単一のバッチ操作で複数の商品を削除します。
目的: 検証による複数商品のバッチ削除を処理
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- 削除結果を含む成功またはエラー
使用例:
// コンポジションでの使用:
compose(deleteProductBatch, deleteTerminator);
主要機能:
- productIDs配列を検証
- MongoDB
$in
演算子を使用してバッチ削除 - 削除操作の結果を返す
- 空の削除シナリオを処理
deleteProduct
安全な削除と存在検証により、IDで商品を削除します。
目的: 存在検証による商品の安全な削除を処理
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- 削除フラグを含む成功またはエラー
使用例:
compose(deleteProduct, deleteTerminator);
主要機能:
- productIdが提供されていることを検証
- データベースからIDによる商品を削除
- 商品が見つからない場合は404を返す
- 削除確認フラグを返す
📦 バッチ操作ハンドラー
copyProduct
商品のコピーを作成し、新しいIDを生成します。
目的: 商品複製とバリエーション作成を処理
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- 新しいproductIdを含む成功またはエラー
使用例:
compose(copyProduct, getProductById, normalizeTerminator);
主要機能:
- 元の商品の存在を検証
- 商品データを複製
- 新しいIDとタイムスタンプを生成
- 複製された商品を挿入
updateProductBatch
単一操作で複数の商品を更新します。
目的: 複数商品の効率的なバッチ更新を処理
パラメータ:
payload
: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error>
- 更新されたproductIds配列を含む成功またはエラー
使用例:
compose(productBatchUpdateSchema, validateBatchUpdate, updateProductBatch, terminator);
主要機能:
- バッチ更新データを検証
- 各商品の存在を確認
- バッチ更新操作を実行
- 更新されたIDsの配列を返す
ターミネーターハンドラー
normalizeProductTerminator
データベース固有フィールドを削除して商品データを正規化します。
目的: APIレスポンス用の商品データをクリーンアップ
パラメータ:
result
:Result<RouteHandlerPayload, Error>
戻り値: 正規化された商品オブジェクト
使用例:
compose(getProductById, normalizeProductTerminator);
主要機能:
- 結果がエラーの場合はエラーをスロー
- コンテキストに商品が存在することを検証
- データベース_idフィールドを削除
- クリーンな商品オブジェクトを返す
normalizeProductsListTerminator
各項目からデータベース固有フィールドを削除して商品リストを正規化します。
目的: APIレスポンス用の商品配列データをクリーンアップ
パラメータ:
result
:Result<RouteHandlerPayload, Error>
戻り値: 正規化された商品オブジェクトの配列
使用例:
compose(findProducts, normalizeProductsListTerminator);
主要機能:
- 結果がエラーの場合はエラーをスロー
- products配列をマップ
- 各商品からデータベース_idフィールドを削除
- クリーンな商品オブジェクトの配列を返す
deleteProductTerminator
適切なステータスコードによる商品削除を終了します。
目的: 204ステータスによる削除成功レスポンスをフォーマット
パラメータ:
result
: Result containing RouteHandlerPayload or Error
戻り値: Response object with 204 statusCode
使用例:
// コンポジションでの使用:
compose(schema, deleteProduct, deleteProductTerminator);
主要機能:
- 204ステータスコードを返す
- 削除操作の結果を検証
- 削除が失敗した場合はエラーをスロー
deleteBatchProductsTerminator
適切なステータスコードによるバッチ商品削除を終了します。
目的: 204ステータスによるバッチ削除成功レスポンスをフォーマット
パラメータ:
result
: Result containing RouteHandlerPayload or Error
戻り値: Response object with 204 statusCode
使用例:
// コンポジションでの使用:
compose(schema, deleteProductBatch, deleteBatchProductsTerminator);
主要機能:
- 204ステータスコードを返す
- バッチ削除操作の結果を検証
- バッチ削除が失敗した場合はエラーをスロー
🔗 関連ドキュメント
- 商品スキーマブロック - 商品データ検証と契約
- 商品ルートブロック - 商品HTTPエンドポイント定義
- 商品フィーチャーブロック - 商品コンポーズ機能