🚀 属性フィーチャーブロック
属性フィーチャーブロックは、Nodeblocksアプリケーションにおける属性管理操作のための完全な事前構成済み機能を提供します。これらのフィーチャーは、適切な検証、認証、エラー処理による即座に使用可能なAPIエンドポイントを作成するために、スキーマとルートを組み合わせます。
🎯 概要
属性フィーチャーブロックは以下を目的として設計されています:
- 属性管理操作のための完全なAPIエンドポイントの提供
- 検証済み操作のためのスキーマとルートの組み合わせ
- 認証と認可チェックの自動実装
- 関数コンポジションパターンのサポート
- ログとエラー管理の円滑な処理
📋 フィーチャー構造
各属性フィーチャーは一貫したコンポジションパターンに従います:
- スキーマ: 入力データとパラメータの検証
- ルート: ハンドラー付きHTTPエンドポイントの提供
- コンポジション:
compose
関数を使用したスキーマとルートの結合
🔧 利用可能な属性フィーチャー
createAttributeFeature
検証とルーティング付き新しい属性セットを作成します。
目的: 完全な検証による属性セット作成を処理
コンポジション:
- スキーマ:
createAttributesSchema
- nameとitems配列を検証 - ルート:
createAttributeRoute
- POST/attributes
作成ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.createAttributeFeature));
// データベース設定付き
app.use('/api', defService(partial(features.createAttributeFeature, [{ dataStores: db }])));
APIエンドポイント: POST /api/attributes
getAttributeFeature
アクセス制御付き個別属性セットデータを取得します。
目的: 適切な認可による属性セットデータの取得
コンポジション:
- スキーマ:
getAttributeSchema
- パスパラメータを検証 - ルート:
getAttributeRoute
- GET/attributes/:id
取得ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.getAttributeFeature));
// データベース設定付き
app.use('/api', defService(partial(features.getAttributeFeature, [{ dataStores: db }])));
APIエンドポイント: GET /api/attributes/:attributeId
findAttributesFeature
フィルタリングとページネーション付き属性セットの検索とリストを行います。
目的: 検索機能付き属性セットリストの提供
コンポジション:
- スキーマ:
findAttributesSchema
- フィルタリング用クエリパラメータを検証 - ルート:
findAttributesRoute
- GET/attributes
検索とページネーション付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.findAttributesFeature));
// データベース設定付き
app.use('/api', defService(partial(features.findAttributesFeature, [{ dataStores: db }])));
APIエンドポイント: GET /api/attributes
updateAttributeFeature
検証とアクセス制御付き属性セットデータを更新します。
目的: 適切な認可による属性セットデータの変更
コンポジション:
- スキーマ:
updateAttributesSchema
- オプションのnameフィールドを検証 - ルート:
updateAttributeRoute
- PUT/attributes/:id
更新ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.updateAttributeFeature));
// データベース設定付き
app.use('/api', defService(partial(features.updateAttributeFeature, [{ dataStores: db }])));
APIエンドポイント: PUT /api/attributes/:attributeId
deleteAttributeFeature
適切な認可による属性セットを削除します。
目的: アクセス制御による属性セットの削除
コンポジション:
- スキーマ:
deleteAttributeSchema
- パスパラメータを検証 - ルート:
deleteAttributeRoute
- DELETE/attributes/:id
削除ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.deleteAttributeFeature));
// データベース設定付き
app.use('/api', defService(partial(features.deleteAttributeFeature, [{ dataStores: db }])));
APIエンドポイント: DELETE /api/attributes/:attributeId