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