⚙️ カテゴリハンドラー
カテゴリハンドラーは、Nodeblocksアプリケーションでカテゴリ管理操作のためのコアビジネスロジック関数を提供します。これらのハンドラーは、カテゴリデータベース操作、データ変換、レスポンスフォーマットの一般的なパターンをカプセル化します。
🎯 概要
カテゴリハンドラーは以下の目的で設計されています:
- 再利用可能な関数でカテゴリビジネスロジックをカプセル化
- 適切なエラー管理でカテゴリデータベース操作を処理
- 異なる形式間でカテゴリデータを変換
- TypeScript統合で型安全性を確保
- 他のカテゴリブロックとの合成をサポート
📋 カテゴリハンドラータイプ
カテゴリ非同期ハンドラー
非同期カテゴリ操作(データベース呼び出し、APIリクエストなど)を実行する関数。
カテゴリ同期ハンドラー
同期カテゴリ操作(データ変換、バリデーションなど)を実行する関数。
カテゴリターミネーターハンドラー
最終的なカテゴリレスポンスをフォーマットして返す関数。
🔧 利用可能なカテゴリハンドラー
createCategory
データベースに新しいカテゴリを作成します。
目的: バリデーションとエンティティ管理を含むカテゴリの作成を処理
パラメータ:
payload:RouteHandlerPayload- リクエストコンテキストとデータを含むparams.requestBody: カテゴリ作成データcontext.db: データベース接続
戻り値: Result<RouteHandlerPayload, Error> - categoryIdまたはエラーを含む成功
ペイロード要件:
params.requestBodyにカテゴリデータが含まれている必要がありますcontext.dbがデータベース操作で利用可能である必要があります
主な機能:
- リクエストボディが存在し、空でないことを検証
- タイムスタンプとIDでベースエンティティを作成
- データベースにカテゴリを挿入
- 成功時にcategoryIdを返す
- データベースエラーを適切に処理
使用例:
import { handlers } from '@nodeblocks/backend-sdk';
const { createCategory } = handlers;
// Use in composition
const categoryPipeline = compose(categorySchema, validateRequest, createCategory, terminator);
getCategoryById
IDで単一のカテゴリを取得します。
目的: 存在検証でカテゴリデータを取得
パラメータ:
payload:RouteHandlerPayload- リクエストコンテキストとデータを含むparams.requestParams.categoryIdまたはcontext.data.categoryId: 取得するカテゴリIDcontext.db: データベース接続
戻り値: Result<RouteHandlerPayload, Error> - カテゴリまたはエラーを含む成功
ペイロード要件:
- カテゴリIDは
params.requestParams.categoryIdまたはcontext.data.categoryIdで提供される必要があります context.dbがデータベース操作で利用可能である必要があります
主な機能:
- categoryIdが提供されていることを検証
- データベースでIDでカテゴリを検索
- カテゴリが見つからない場合は404を返す
- 成功時にカテゴリデータを返す
- データベースエラーを適切に処理
使用例:
import { handlers } from '@nodeblocks/backend-sdk';
const { getCategoryById } = handlers;
// Use in composition
const categoryPipeline = compose(idSchema, validateId, getCategoryById, normalizeTerminator);
findCategories
オプションのフィルタリングで複数のカテゴリを検索します。
目的: フィルターサポートでカテゴリのクエリを処理
パラメータ:
payload:RouteHandlerPayload- リクエストコンテキストとデータを含むparams.requestQuery: カテゴリのオプションのフィルター条件context.db: データベース接続
戻り値: Result<RouteHandlerPayload, Error> - カテゴリ配列またはエラーを含む成功
ペイロード要件:
params.requestQueryはオプション - 提供された場合、MongoDBフィルターとして使用context.dbがデータベース操作で利用可能である必要があります
主な機能:
- リクエストクエリからオプションのフィルターを受け入れる
- フィルターが提供されない場合はすべてのカテゴリを返す
- カテゴリの配列を返す
- データベースエラーを適切に処理
使用例:
import { handlers } from '@nodeblocks/backend-sdk';
const { findCategories } = handlers;
// Use in composition
const categoryPipeline = compose(findCategories, listTerminator);
updateCategory
IDで既存のカテゴリを更新します。
目的: バリデーションと競合検出でカテゴリの更新を処理
パラメータ:
payload:RouteHandlerPayload- リクエストコンテキストとデータを含むparams.requestParams.categoryIdまたはcontext.data.categoryId: 更新するカテゴリIDparams.requestBody: 更新するカテゴリデータcontext.db: データベース接続
戻り値: Result<RouteHandlerPayload, Error> - 更新結果またはエラーを含む成功
ペイロード要件:
- カテゴリIDは
params.requestParams.categoryIdまたはcontext.data.categoryIdで提供される必要があります params.requestBodyに更新するカテゴリデータが含まれている必要がありますcontext.dbがデータベース操作で利用可能である必要があります
主な機能:
- categoryIdが提供されていることを検証
- リクエストボディが存在し、空でないことを検証
- タイムスタンプでベースエンティティを更新
- 更新前にカテゴリが存在するかチェック
- 成功時に更新結果を返す
- 見つからない場合と更新失敗を処理
使用例:
import { handlers } from '@nodeblocks/backend-sdk';
const { updateCategory } = handlers;
// Use in composition
const categoryPipeline = compose(updateCategory, terminator);
deleteCategory
IDでカテゴリを削除します。
目的: 存在検証でカテゴリの安全な削除を処理
パラメータ:
payload:RouteHandlerPayload- リクエストコンテキストとデータを含むparams.requestParams.categoryIdまたはcontext.data.categoryId: 削除するカテゴリIDcontext.db: データベース接続
戻り値: Result<RouteHandlerPayload, Error> - 削除結果またはエラーを含む成功
ペイロード要件:
- カテゴリIDは
params.requestParams.categoryIdまたはcontext.data.categoryIdで提供される必要があります context.dbがデータベース操作で利用可能である必要があります
主な機能:
- categoryIdが提供されていることを検証
- データベースからIDでカテゴリを削除
- カテゴリが見つからない場合は404を返す
- 成功時に削除結果を返す
- データベースエラーを適切に処理
使用例:
import { handlers } from '@nodeblocks/backend-sdk';
const { deleteCategory } = handlers;
// Use in composition
const categoryPipeline = compose(deleteCategory, deleteTerminator);
enableCategory
ステータスをactiveに設定してカテゴリを有効化します。
目的: ステータス検証でカテゴリの有効化を処理
パラメータ:
payload:RouteHandlerPayload- リクエストコンテキストとデータを含むparams.requestParams.categoryIdまたはcontext.data.categoryId: 有効化するカテゴリIDcontext.db: データベース接続
戻り値: Result<RouteHandlerPayload, Error> - 有効化結果またはエラーを含む成功
ペイロード要件:
- カテゴリIDは
params.requestParams.categoryIdまたはcontext.data.categoryIdで提供される必要があります context.dbがデータベース操作で利用可能である必要があります
主な機能:
- categoryIdが提供されていることを検証
- カテゴリステータスを'active'に設定
- 有効化前にカテゴリが存在するかチェック
- 成功時に有効化結果を返す
- 見つからない場合と有効化失敗を処理
使用例:
import { handlers } from '@nodeblocks/backend-sdk';
const { enableCategory } = handlers;
// Use in composition
const categoryPipeline = compose(enableCategory, enableTerminator);
disableCategory
ステータスをinactiveに設定してカテゴリを無効化します。
目的: ステータス検証でカテゴリの無効化を処理
パラメータ:
payload:RouteHandlerPayload- リクエストコンテキストとデータを含むparams.requestParams.categoryIdまたはcontext.data.categoryId: 無効化するカテゴリIDcontext.db: データベース接続
戻り値: Result<RouteHandlerPayload, Error> - 無効化結果またはエラーを含む成功
ペイロード要件:
- カテゴリIDは
params.requestParams.categoryIdまたはcontext.data.categoryIdで提供される必要があります context.dbがデータベース操作で利用可能である必要があります
主な機能:
- categoryIdが提供されていることを検証
- カテゴリステータスを'inactive'に設定
- 無効化前にカテゴリが存在するかチェック
- 成功時に無効化結果を返す
- 見つからない場合と無効化失敗を処理
使用例:
import { handlers } from '@nodeblocks/backend-sdk';
const { disableCategory } = handlers;
// Use in composition
const categoryPipeline = compose(disableCategory, disableTerminator);
🎯 カテゴリターミネーターハンドラー
normalizeCategoryTerminator
データベース固有のフィールドを削除してカテゴリデータを正規化します。
目的: APIレスポンス用にカテゴリデータをクリーンアップ
パラメータ:
result:Result<RouteHandlerPayload, Error>- ペイロードまたはエラーを含む結果context.data.category: 前のハンドラーからのカテゴリオブジェクト
戻り値: 正規化されたカテゴリオブジェクト
ペイロード要件:
context.data.categoryが前のハンドラーから利用可能である必要があります
使用例:
import { handlers } from '@nodeblocks/backend-sdk';
const { normalizeCategoryTerminator } = handlers;
// Use in composition
const categoryPipeline = compose(getCategoryById, normalizeCategoryTerminator);
normalizeCategoriesListTerminator
各アイテムからデータベース固有のフィールドを削除してカテゴリリストを正規化します。
目的: APIレスポンス用にカテゴリ配列データをクリーンアップ
パラメータ:
result:Result<RouteHandlerPayload, Error>- ペイロードまたはエラーを含む結果context.data.categories: 前のハンドラーからのカテゴリオブジェクトの配列
戻り値: 正規化されたカテゴリオブジェクトの配列
ペイロード要件:
context.data.categoriesが前のハンドラーから利用可能である必要があります
使用例:
import { handlers } from '@nodeblocks/backend-sdk';
const { normalizeCategoriesListTerminator } = handlers;
// Use in composition
const categoryPipeline = compose(findCategories, normalizeCategoriesListTerminator);
deleteCategoryTerminator
適切なステータスコードでカテゴリ削除を終了します。
目的: 204ステータスで成功した削除レスポンスをフォーマット
パラメータ:
result:Result<RouteHandlerPayload, Error>- ペイロードまたはエラーを含む結果context.data.deleteCategory: 前のハンドラーからの削除結果
戻り値: 204 statusCodeを持つレスポンスオブジェクト
ペイロード要件:
context.data.deleteCategoryが前のハンドラーから利用可能である必要があります
使用例:
import { handlers } from '@nodeblocks/backend-sdk';
const { deleteCategoryTerminator } = handlers;
// Use in composition
const categoryPipeline = compose(deleteCategory, deleteCategoryTerminator);
enableCategoryTerminator
適切なステータスコードでカテゴリ有効化を終了します。
目的: 204ステータスで成功したカテゴリ有効化レスポンスをフォーマット
パラメータ:
result:Result<RouteHandlerPayload, Error>- ペイロードまたはエラーを含む結果context.data.enableCategory: 前のハンドラーからの有効化結果
戻り値: 204 statusCodeを持つレスポンスオブジェクト
ペイロード要件:
context.data.enableCategoryが前のハンドラーから利用可能である必要があります
使用例:
import { handlers } from '@nodeblocks/backend-sdk';
const { enableCategoryTerminator } = handlers;
// Use in composition
const categoryPipeline = compose(enableCategory, enableCategoryTerminator);
disableCategoryTerminator
適切なステータスコードでカテゴリ無効化を終了します。
目的: 204ステータスで成功したカテゴリ無効化レスポンスをフォーマット
パラメータ:
result:Result<RouteHandlerPayload, Error>- ペイロードまたはエラーを含む結果context.data.disableCategory: 前のハンドラーからの無効化結果
戻り値: 204 statusCodeを持つレスポンスオブジェクト
ペイロード要件:
context.data.disableCategoryが前のハンドラーから利用可能である必要があります
使用例:
import { handlers } from '@nodeblocks/backend-sdk';
const { disableCategoryTerminator } = handlers;
// Use in composition
const categoryPipeline = compose(disableCategory, disableCategoryTerminator);