🛍️ 商品フィーチャーブロック
商品フィーチャーブロックは、Nodeblocksアプリケーションにおける商品管理操作のための完全な事前構成済み機能を提供します。これらのフィーチャーは、商品CRUD操作、バッチ処理、コピー機能のための即座に使用可能なAPIエンドポイントを作成するために、スキーマ、ルート、ハンドラーを組み合わせます。
🎯 概要
商品フィーチャーブロックは以下を目的として設計されています:
- 完全なCRUD操作による完全な商品管理の提供
- バッチ操作による効率的な一括商品処理
- 商品検索とフィルタリング機能の実現
- 商品コピー機能によるカタログ管理の実現
- 安全な商品操作のための検証とルーティングの実装
- ページネーションによる大規模商品コレクションのサポート
📋 フィーチャー構造
各商品フィーチャーは一貫したコンポジションパターンに従います:
- スキーマ: 商品入力データとパラメータの検証
- ルート: ハンドラー付きHTTPエンドポイントの提供
- コンポジション:
compose
関数を使用したスキーマとルートの結合
🔧 利用可能な商品フィーチャー
createProductFeature
検証とルーティング付き新しい商品を作成します。
目的: 完全な検証による商品作成を処理
コンポジション:
- スキーマ:
createProductSchema
- nameとdescriptionを検証 - ルート:
createProductRoute
- POST/products
作成ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.createProductFeature));
// データベース設定付き
app.use('/api', defService(partial(features.createProductFeature, [{ dataStores: db }])));
APIエンドポイント: POST /api/products
createProductBatchFeature
スキーマ検証とルーティング付きバッチ商品作成機能。
目的: 検証による複数商品の一括作成を処理
コンポジション:
- スキーマ:
createProductBatchSchema
- 商品オブジェクトの配列を検証 - ルート:
createProductBatchRoute
- POST/products/batch
バッチ作成ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.createProductBatchFeature));
// データベース設定付き
app.use('/api', defService(partial(features.createProductBatchFeature, [{ dataStores: db }])));
APIエンドポイント: POST /api/products/batch
getProductFeatures
アクセス制御付き個別商品データ取得機能。
目的: 適切な認可による商品データの取得
コンポジション:
- スキーマ:
getProductSchema
- パスパラメータを検証 - ルート:
getProductRoute
- GET/products/:id
取得ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.getProductFeatures));
// データベース設定付き
app.use('/api', defService(partial(features.getProductFeatures, [{ dataStores: db }])));
APIエンドポイント: GET /api/products/:productId
findProductsFeatures
フィルタリングとページネーション付き商品検索機能。
目的: 検索機能付き商品リストの提供
コンポジション:
- スキーマ:
findProductsSchema
- フィルタリング用クエリパラメータを検証 - ルート:
findProductsRoute
- GET/products
検索とページネーション付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.findProductsFeatures));
// データベース設定付き
app.use('/api', defService(partial(features.findProductsFeatures, [{ dataStores: db }])));
APIエンドポイント: GET /api/products
editProductFeatures
検証とアクセス制御付き商品データ更新機能。
目的: 適切な認可による商品データの変更
コンポジション:
- スキーマ:
updateProductSchema
- オプションのnameとdescriptionフィールドを検証 - ルート:
updateProductRoute
- PUT/products/:id
更新ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.editProductFeatures));
// データベース設定付き
app.use('/api', defService(partial(features.editProductFeatures, [{ dataStores: db }])));
APIエンドポイント: PUT /api/products/:productId
editProductBatchFeatures
スキーマ検証とルーティング付きバッチ商品更新機能。
目的: 検証による複数商品の一括更新を処理
コンポジション:
- スキーマ:
updateProductBatchSchema
- ids配列とdataオブジェクトを検証 - ルート:
updateProductBatchRoute
- PUT/products/batch
バッチ更新ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.editProductBatchFeatures));
// データベース設定付き
app.use('/api', defService(partial(features.editProductBatchFeatures, [{ dataStores: db }])));
APIエンドポイント: PUT /api/products/batch
deleteProductFeatures
アクセス制御付き商品削除機能。
目的: アクセス制御による商品の削除
コンポジション:
- スキーマ:
deleteProductSchema
- パスパラメータを検証 - ルート:
deleteProductRoute
- DELETE/products/:id
削除ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.deleteProductFeatures));
// データベース設定付き
app.use('/api', defService(partial(features.deleteProductFeatures, [{ dataStores: db }])));
APIエンドポイント: DELETE /api/products/:productId
deleteProductBatchFeatures
スキーマ検証とルーティング付きバッチ商品削除機能。
目的: 検証による複数商品の一括削除を処理
コンポジション:
- スキーマ:
deleteProductBatchSchema
- 文字列IDの配列を検証 - ルート:
deleteProductBatchRoute
- DELETE/products/batch
バッチ削除ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.deleteProductBatchFeatures));
// データベース設定付き
app.use('/api', defService(partial(features.deleteProductBatchFeatures, [{ dataStores: db }])));
APIエンドポイント: DELETE /api/products/batch
📋 商品コピーフィーチャー
copyProductFeatures
ルーティング付き商品コピー機能。
目的: 適切な複製による商品のコピーを作成
コンポジション:
- スキーマ:
copyProductSchema
- パスパラメータを検証 - ルート:
copyProductRoute
- POST/products/:id/copy
コピーハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.copyProductFeatures));
// データベース設定付き
app.use('/api', defService(partial(features.copyProductFeatures, [{ dataStores: db }])));
APIエンドポイント: POST /api/products/:productId/copy
copyProductBatchFeatures
スキーマ検証とルーティング付きバッチ商品コピー機能。
目的: 検証による複数商品の一括複製を処理
コンポジション:
- スキーマ:
copyProductBatchSchema
- 文字列IDの配列を検証 - ルート:
copyProductBatchRoute
- POST/products/batch/copy
バッチコピーハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.copyProductBatchFeatures));
// データベース設定付き
app.use('/api', defService(partial(features.copyProductBatchFeatures, [{ dataStores: db }])));
APIエンドポイント: POST /api/products/batch/copy
🔗 関連ドキュメント
- 商品スキーマブロック - 商品データ検証と契約
- 商品ハンドラーブロック - 商品ビジネスロジック機能
- 商品ルートブロック - 商品HTTPエンドポイント定義