⚙️ カテゴリハンドラ
カテゴリハンドラは Express ミドルウェアではなくルートパイプライン関数です。params と context から RouteHandlerPayload の値を読み取り、成功した値を context.data にマージするか、成功した Result を HTTP レスポンス記述子で終了します。
インベントリ
| ハンドラ | パイプラインの役割 | 入力 / context | 結果 / 動作 / エラー | ルートでの使用 |
|---|---|---|---|---|
createCategory | ハンドラ | 空でない requestBody、context.db.categories | categoryId を書き込み;ベースエンティティを作成;失敗時に 400 または 500。 | createCategoryRoute |
getCategoryById | ハンドラ | context.data.categoryId またはパス categoryId、context.db.categories | category を書き込み;失敗時に 400、404、または 500。 | createCategoryRoute、getCategoryRoute、updateCategoryRoute |
findCategories | ハンドラ | requestQuery、context.db.categories | 一致する categories を書き込み;クエリ失敗時に 500。 | findCategoriesRoute |
updateCategory | ハンドラ | カテゴリ ID、空でない requestBody、context.db.categories | ベースエンティティフィールドを更新し、更新結果を書き込み;400、404、または 500。 | updateCategoryRoute |
deleteCategory | ハンドラ | カテゴリ ID、context.db.categories | 一致するカテゴリを削除し、削除結果を書き込み;400、404、または 500。 | deleteCategoryRoute |
enableCategory | ハンドラ | カテゴリ ID、context.db.categories | status を 'active' に設定;400、404、または 500。 | enableCategoryRoute |
disableCategory | ハンドラ | カテゴリ ID、context.db.categories | status を 'inactive' に設定;400、404、または 500。 | disableCategoryRoute |
normalizeCategoryTerminator | ターミネータ | context.data.category | _id を削除しカテゴリを1件返却;データ欠損は 500。 | createCategoryRoute、getCategoryRoute、updateCategoryRoute |
normalizeCategoriesListTerminator | ターミネータ | context.data.categories | _id を削除しページネーションメタデータを保持;形状無効は 500。 | findCategoriesRoute |
deleteCategoryTerminator | ターミネータ | context.data.deleteCategory | { statusCode: 204 } を返却;データ欠損は 500。 | deleteCategoryRoute |
enableCategoryTerminator | ターミネータ | context.data.enableCategory | { statusCode: 204 } を返却;データ欠損は 500。 | enableCategoryRoute |
disableCategoryTerminator | ターミネータ | context.data.disableCategory | { statusCode: 204 } を返却;データ欠損は 500。 | disableCategoryRoute |
詳細
createCategory
実装
空のボディを 400 で拒否し、createBaseEntity(requestBody) を挿入して生成された id を categoryId として書き込みます。データベースの失敗は 500、欠損した insertedId は 400 を返します。createCategoryRoute で使用されます。
getCategoryById
実装
パスパラメータより前に context.data.categoryId を使用します。ID 欠損は 400、データベースの失敗は 500、一致するカテゴリなしは 404 です。createCategoryRoute、getCategoryRoute、updateCategoryRoute で使用されます。
findCategories
実装
requestQuery(または {})を直接 categories.find に渡し、カーソルを配列に変換して categories を書き込みます;データベースの失敗は 500 です。エクスポートされたルートでは、withPagination がこのハンドラの前に page と limit を削除し、toArray() をページネーションされた { data, metadata } 結果に変更します。findCategoriesRoute で使用されます。ページネーションはそのルートの withPagination ラッパーによって適用されます。
updateCategory
実装
ID と空でないボディを要求し、updateBaseEntity(requestBody) を適用します。ID またはボディの欠損は 400;一致なしは 404;変更なしは 400 です。updateCategoryRoute で使用されます。
deleteCategory
実装
ID で削除し deleteCategory を書き込みます。ID 欠損は 400、削除なしは 404、データベースの失敗は 500 です。deleteCategoryRoute で使用されます。
enableCategory
実装
updateBaseEntity({ status: 'active' }) でカテゴリを更新します。ID 欠損は 400、一致なしは 404、変更なしの結果は 500 です。enableCategoryRoute で使用されます。
disableCategory
実装
updateBaseEntity({ status: 'inactive' }) でカテゴリを更新します。ID 欠損は 400、一致なしは 404、変更なしの結果は 500 です。disableCategoryRoute で使用されます。
normalizeCategoryTerminator
実装
パイプラインエラーをスローするか、context.data.category が欠損している場合に 500 をスローします;それ以外の場合は MongoDB _id なしでカテゴリを返却します。createCategoryRoute、getCategoryRoute、updateCategoryRoute で使用されます。
normalizeCategoriesListTerminator
実装
パイプラインエラーをスローするか、categories が配列またはページネーションされた { data, metadata } 値でない場合に 500 をスローします。返却されるすべてのカテゴリから _id を削除します。エクスポートされたルートでは、ページネーションされた入力は常に { data, metadata: { pagination } } に正規化されます。findCategoriesRoute で使用されます。
deleteCategoryTerminator
実装
パイプラインエラーをスローするか、deleteCategory が欠損している場合に 500 をスローします;それ以外の場合は { statusCode: 204 } を返却します。deleteCategoryRoute で使用されます。
enableCategoryTerminator
実装
パイプラインエラーをスローするか、enableCategory が欠損している場合に 500 をスローします;それ以外の場合は { statusCode: 204 } を返却します。enableCategoryRoute で使用されます。
disableCategoryTerminator
実装
パイプラインエラーをスローするか、disableCategory が欠損している場合に 500 をスローします;それ以外の場合は { statusCode: 204 } を返却します。disableCategoryRoute で使用されます。