⚙️ カテゴリハンドラーブロック
カテゴリハンドラーブロックは、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;
// 合成で使用
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;
// 合成で使用
const categoryPipeline = compose(idSchema, validateId, getCategoryById, normalizeTerminator);
findCategories
オプションのフィルタリングを使用して複数のカテゴリを検索します。
Purpose: フィルターサポートを使用してカテゴリのクエリを処理します
パラメーター:
payload
:RouteHandlerPayload
- リクエストコンテキストとデータを含むparams.requestQuery
: カテゴリのオプションのフィルター基準context.db
: データベース接続
戻り値: Result<RouteHandlerPayload, Error>
- カテゴリ配列を含む成功またはエラー
ペイロード要件:
params.requestQuery
はオプション - 提供された場合は MongoDB フィルターとして使用context.db
はデータベース操作のために利用可能である必要があります
主要機能:
- リクエストクエリからオプションのフィルターを受け入れる
- フィルターが提供されていない場合はすべてのカテゴリを返す
- カテゴリの配列を返す
- データベースエラーを適切に処理
使用例:
import { handlers } from '@nodeblocks/backend-sdk';
const { findCategories } = handlers;
// 合成で使用
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;
// 合成で使用
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;
// 合成で使用
const categoryPipeline = compose(deleteCategory, deleteTerminator);
enableCategory
カテゴリのステータスをアクティブに設定することでカテゴリを有効化します。
目的: ステータス検証を使用してカテゴリの有効化を処理します
パラメーター:
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;
// 合成で使用
const categoryPipeline = compose(enableCategory, enableTerminator);
disableCategory
カテゴリのステータスを非アクティブに設定することでカテゴリを無効化します。
目的: ステータス検証を使用してカテゴリの無効化を処理します
パラメーター:
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;
// 合成で使用
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;
// 合成で使用
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;
// 合成で使用
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;
// 合成で使用
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;
// 合成で使用
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;
// 合成で使用
const categoryPipeline = compose(disableCategory, disableCategoryTerminator);