⚙️ プロダクトハンドラー
プロダクトハンドラーは Express ミドルウェアではなくルートパイプライン関数です。params と context の RouteHandlerPayload 値を読み取り、成功値を context.data にマージするか、成功した Result を HTTP レスポンスディスクリプターで終了します。
一覧
| ハンドラー | パイプラインでの役割 | 入力 / コンテキスト | 結果 / 動作 / エラー | 使用するルート |
|---|---|---|---|---|
createProduct | ハンドラー | requestBody、db.products | 基本エンティティを作成し productId を書き込みます。空本文/挿入失敗は 400、DB 失敗は 500。 | createProductRoute |
createProductBatch | ハンドラー | 配列の requestBody、db.products | 基本エンティティを作成し productIds を書き込みます。無効入力/件数不一致は 400、DB 失敗は 500。 | createProductBatchRoute |
getProductById | ハンドラー | context.data.productId またはパス productId、db.products | product を書き込みます。ID 欠落は 400、不在は 404、DB 失敗は 500。 | カスタム合成のみ |
getProductsByIds | ハンドラー | context.data.productIds または requestBody、db.products | products を書き込みます。ID 欠落/非配列は 400、一致なしは 404、DB 失敗は 500。 | createProductBatchRoute、updateProductBatchRoute、copyProductBatchRoute |
findProducts | ハンドラー | requestQuery、db.products | クエリまたは空フィルターから products を書き込みます。DB 失敗は 500。 | カスタム合成のみ |
updateProduct | ハンドラー | パス/コンテキスト ID、requestBody、db.products | updateBaseEntity で更新して updateProductId を書き込みます。入力欠落/変更なしは 400、一致なしは 404、DB 失敗は 500。 | updateProductRoute |
updateProductBatch | ハンドラー | ID、更新データ、db.products | 一致 ID を更新して productIds を書き込みます。入力欠落/空/変更なしは 400、一致なしは 404、DB 失敗は 500。 | updateProductBatchRoute |
copyProduct | ハンドラー | パス/コンテキスト ID、db.products | _id なしでコピーし、新しい productId を書き込みます。ID 欠落/挿入失敗は 400、不在は 404、DB 失敗は 500。 | copyProductRoute |
copyProductBatch | ハンドラー | ID、db.products | 見つかったプロダクトを _id なしでコピーし、新しい productIds を書き込みます。無効 ID/件数不一致は 400、一致なしは 404、DB 失敗は 500。 | copyProductBatchRoute |
deleteProduct | ハンドラー | パス/コンテキスト ID、db.products | deleteProduct を書き込みます。ID なしは 400、削除なしは 404、DB 失敗は 500。 | deleteProductRoute |
deleteProductBatch | ハンドラー | ID、db.products | deleteProducts を書き込みます。無効 ID/削除なしは 400、DB 失敗は 500。 | deleteProductBatchRoute |
normalizeProductTerminator | ターミネーター | 結果、context.data.product | _id を削除し、エラー結果またはデータ欠落時は 500 をスローします。 | カスタム合成のみ |
normalizeProductsListTerminator | ターミネーター | 結果、context.data.products | 配列またはページネーション済み data から _id を削除しメタデータを保持します。 | カスタム合成のみ |
deleteProductTerminator | ターミネーター | 結果、context.data.deleteProduct | { statusCode: 204 } を返します。エラー結果/データ欠落は 500。 | カスタム合成のみ |
deleteBatchProductsTerminator | ターミネーター | 結果、context.data.deleteProducts | { statusCode: 204 } を返します。エラー結果/データ欠落は 500。 | deleteProductBatchRoute |
詳細
createProduct
実装
params.requestBody と context.db.products を読み取り、context.data.productId を書き込みます。空でない本文を必要とし、基本エンティティを作成します。空本文/挿入失敗は 400、DB 失敗は 500 です。createProductRoute で使用されます。
createProductBatch
実装
params.requestBody の配列と context.db.products を読み取り、context.data.productIds を書き込みます。空でない配列を必要とし、1 回の挿入で基本エンティティを作成します。無効入力/件数不一致は 400、DB 失敗は 500 です。createProductBatchRoute で使用されます。
getProductById
実装
context.data.productId または params.requestParams.productId と context.db.products を読み取り、context.data.product を書き込みます。ID なしは 400、プロダクト不在は 404、DB 失敗は 500 です。カスタム合成のみで使用されます。
getProductsByIds
実装
context.data.productIds または params.requestBody と context.db.products を読み取り、context.data.products を書き込みます。ID 欠落/非配列は 400、一致なしは 404、DB 失敗は 500 です。createProductBatchRoute、updateProductBatchRoute、copyProductBatchRoute で使用されます。
findProducts
実装
params.requestQuery と context.db.products を読み取り、context.data.products を書き込みます。リクエストフィルターまたは空フィルターでクエリし、DB 失敗時は 500 を返します。カスタム合成のみです。
updateProduct
実装
context.data.productId または params.requestParams.productId、params.requestBody、context.db.products を読み取り、context.data.updateProductId を書き込みます。updateBaseEntity で更新します。入力欠落/変更なしは 400、一致なしは 404、DB 失敗は 500 です。updateProductRoute で使用されます。
updateProductBatch
実装
context.data.productIds または params.requestBody.ids、context.data.data または params.requestBody.data、context.db.products を読み取り、context.data.productIds を書き込みます。一致する全 ID を updateBaseEntity で更新します。入力欠落/空/変更なしは 400、一致なしは 404、DB 失敗は 500 です。updateProductBatchRoute で使用されます。
copyProduct
実装
context.data.productId または params.requestParams.productId と context.db.products を読み取り、新しい context.data.productId を書き込みます。ソースを _id なしで基本エンティティへコピーします。ID 欠落/挿入失敗は 400、不在は 404、DB 失敗は 500 です。copyProductRoute で使用されます。
copyProductBatch
実装
context.data.productIds または params.requestBody と context.db.products を読み取り、新しい context.data.productIds を書き込みます。見つかったプロダクトを _id なしでコピーします。無効 ID/件数不一致は 400、一致なしは 404、DB 失敗は 500 です。copyProductBatchRoute で使用されます。
deleteProduct
実装
context.data.productId または params.requestParams.productId と context.db.products を読み取り、context.data.deleteProduct を書き込みます。1 件を削除します。ID なしは 400、削除なしは 404、DB 失敗は 500 です。deleteProductRoute で使用されます。
deleteProductBatch
実装
context.data.productIds または params.requestBody と context.db.products を読み取り、context.data.deleteProducts を書き込みます。一致 ID を削除します。無効 ID/削除なしは 400、DB 失敗は 500 です。deleteProductBatchRoute で使用されます。
normalizeProductTerminator
実装
Result 値と context.data.product を読み取ります。エラー結果をスローし、そうでなければ _id を削除してプロダクトを返します。データがない場合は 500 をスローします。カスタム合成のみです。
normalizeProductsListTerminator
実装
Result 値と context.data.products を読み取ります。エラー結果をスローし、そうでなければ配列またはページネーション済み data から _id を削除してメタデータを保持します。カスタム合成のみです。
deleteProductTerminator
実装
Result 値と context.data.deleteProduct を読み取ります。エラー結果をスローし、削除データ欠落は 500、それ以外は { statusCode: 204 } を返します。カスタム合成のみです。
deleteBatchProductsTerminator
実装
Result 値と context.data.deleteProducts を読み取ります。エラー結果をスローし、削除データ欠落は 500、それ以外は { statusCode: 204 } を返します。deleteProductBatchRoute で使用されます。