🚀 属性機能ブロック
属性機能ブロックは、Nodeblocks アプリケーションにおける属性管理操作のための、あらかじめ構成された完全な機能を提供します。これらの機能はスキーマとルートを組み合わせ、適切な検証・認証・エラー処理を備えたすぐに使える API エンドポイントを作成します。
🎯 概要
属性機能ブロックは次のことを目的として設計されています:
- 属性管理操作のための完全な API エンドポイントを提供する
- 検証済みの操作を実現するためにスキーマとルートを組み合わせる
- 認証および認可チェックを自動的に含める
- 関数的な合成パターンをサポートする
- ロギングとエラー管理をシームレスに処理する
📋 機能の構成
各属性機能は一貫した構成パターンに従います:
- スキーマ: 入力データとパラメータを検証します
- ルート: ハンドラを備えた HTTP エンドポイントを提供します
- 合成:
compose
関数を用いてスキーマとルートを組み合わせます
🔧 利用可能な属性機能
createAttributeFeature
検証とルーティングを伴って新しい属性セットを作成します。
目的: 属性セットの作成を完全な検証とともに処理します
構成:
- スキーマ:
createAttributesSchema
- 名前と 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/:attributeId
使用例:
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
- 更新ハンドラを伴う PATCH/attributes/:attributeId
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接の使用(ハンドラ内で dataStores が必要)
app.use('/api', defService(features.updateAttributeFeature));
// データベース設定を併用する場合
app.use('/api', defService(partial(features.updateAttributeFeature, [{ dataStores: db }])));
API エンドポイント: PATCH /api/attributes/:attributeId
deleteAttributeFeature
適切な認可のもとで属性セットを削除します。
目的: アクセス制御のもとで属性セットを削除します
構成:
- スキーマ:
deleteAttributeSchema
- パスパラメータを検証します - ルート:
deleteAttributeRoute
- 削除ハンドラを伴う DELETE/attributes/:attributeId
使用例:
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