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