📂 カテゴリフィーチャーブロック
カテゴリフィーチャーブロックは、Nodeblocksアプリケーションにおけるカテゴリ管理操作のための完全な事前構成済み機能を提供します。これらのフィーチャーは、カテゴリCRUD操作、ステータス管理、階層構成のための即座に使用可能なAPIエンドポイントを作成するために、スキーマ、ルート、ハンドラーを組み合わせます。
🎯 概要
カテゴリフィーチャーブロックは以下を目的として設計されています:
- 完全なCRUD操作による完全なカテゴリ管理の提供
- 親子関係による階層構成のサポート
- カテゴリステータス管理(有効/無効操作)の処理
- 安全な操作のための検証とルーティングの実装
- カテゴリリストのためのフィルタリングとページネーションのサポート
📋 フィーチャー構造
各カテゴリフィーチャーは一貫したコンポジションパターンに従います:
- スキーマ: カテゴリ入力データとパラメータの検証
- ルート: カテゴリハンドラー付きHTTPエンドポイントの提供
- コンポジション:
compose
関数を使用したスキーマとルートの結合
🔧 利用可能なカテゴリフィーチャー
createCategoryFeature
検証とルーティング付き新しいカテゴリを作成します。
目的: 完全な検証によるカテゴリ作成を処理
コンポジション:
- スキーマ:
createCategorySchema
- name、description、status、オプションのparentを検証 - ルート:
createCategoryRoute
- POST/categories
作成ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.createCategoryFeature));
// データベース設定付き
app.use('/api', defService(partial(features.createCategoryFeature, [{ dataStores: db }])));
APIエンドポイント: POST /api/categories
getCategoryFeatures
アクセス制御付き個別カテゴリデータを取得します。
目的: 適切な検証によるカテゴリ情報の取得
コンポジション:
- スキーマ:
getCategorySchema
- パスパラメータを検証 - ルート:
getCategoryRoute
- GET/categories/:id
取得ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.getCategoryFeatures));
// データベース設定付き
app.use('/api', defService(partial(features.getCategoryFeatures, [{ dataStores: db }])));
APIエンドポイント: GET /api/categories/:categoryId
findCategoriesFeatures
フィルタリングとページネーション付きカテゴリの検索とリストを行います。
目的: 検索機能付きカテゴリリストの提供
コンポジション:
- スキーマ:
findCategoriesSchema
- フィルタリング用クエリパラメータを検証 - ルート:
findCategoriesRoute
- GET/categories
検索とページネーション付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.findCategoriesFeatures));
// データベース設定付き
app.use('/api', defService(partial(features.findCategoriesFeatures, [{ dataStores: db }])));
APIエンドポイント: GET /api/categories
editCategoryFeatures
検証とアクセス制御付きカテゴリデータを更新します。
目的: 適切な認可によるカテゴリデータの変更
コンポジション:
- スキーマ:
updateCategorySchema
- 部分的カテゴリプロパティを検証 - ルート:
updateCategoryRoute
- PUT/categories/:id
更新ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.editCategoryFeatures));
// データベース設定付き
app.use('/api', defService(partial(features.editCategoryFeatures, [{ dataStores: db }])));
APIエンドポイント: PUT /api/categories/:categoryId
enableCategoryStatusFeatures
カテゴリを有効化します(管理者のみ)。
目的: カテゴリアクセスを有効化
コンポジション:
- スキーマ:
enableCategorySchema
- パスパラメータを検証 - ルート:
enableCategoryRoute
- PUT/categories/:id/enable
有効化ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.enableCategoryStatusFeatures));
// データベース設定付き
app.use('/api', defService(partial(features.enableCategoryStatusFeatures, [{ dataStores: db }])));
APIエンドポイント: PUT /api/categories/:categoryId/enable
disableCategoryStatusFeatures
カテゴリを無効化します(管理者のみ)。
目的: カテゴリアクセスを無効化
コンポジション:
- スキーマ:
disableCategorySchema
- パスパラメータを検証 - ルート:
disableCategoryRoute
- PUT/categories/:id/disable
無効化ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.disableCategoryStatusFeatures));
// データベース設定付き
app.use('/api', defService(partial(features.disableCategoryStatusFeatures, [{ dataStores: db }])));
APIエンドポイント: PUT /api/categories/:categoryId/disable
editCategoryStatusFeatures
有効化と無効化操作を組み合わせたカテゴリステータス管理を提供します。
目的: 完全なカテゴリステータス管理機能を提供
コンポジション:
- フィーチャー:
enableCategoryStatusFeatures
,disableCategoryStatusFeatures
- 両方のステータス操作を組み合わせる
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.editCategoryStatusFeatures));
// データベース設定付き
app.use('/api', defService(partial(features.editCategoryStatusFeatures, [{ dataStores: db }])));
APIエンドポイント:
PUT /api/categories/:categoryId/enable
- カテゴリを有効化PUT /api/categories/:categoryId/disable
- カテゴリを無効化
deleteCategoryFeatures
適切な認可によるカテゴリを削除します。
目的: アクセス制御によるカテゴリの削除
コンポジション:
- スキーマ:
deleteCategorySchema
- パスパラメータを検証 - ルート:
deleteCategoryRoute
- DELETE/categories/:id
削除ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.deleteCategoryFeatures));
// データベース設定付き
app.use('/api', defService(partial(features.deleteCategoryFeatures, [{ dataStores: db }])));
APIエンドポイント: DELETE /api/categories/:categoryId
🔗 関連ドキュメント
- カテゴリスキーマブロック - カテゴリデータ検証と契約
- カテゴリハンドラーブロック - カテゴリビジネスロジック機能
- カテゴリルートブロック - カテゴリHTTPエンドポイント定義