メインコンテンツまでスキップ
バージョン: 0.5.0 (最新)

⚙️ カテゴリハンドラーブロック

カテゴリハンドラーブロックは、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: 取得するカテゴリ ID
    • context.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: 更新するカテゴリ ID
    • params.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: 削除するカテゴリ ID
    • context.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: 有効化するカテゴリ ID
    • context.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: 無効化するカテゴリ ID
    • context.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);