📦 Product 機能ブロック
Product 機能ブロックは、NodeBlocks アプリケーションにおける製品管理操作のための完全な事前構成済み機能を提供します。これらの機能は、スキーマ、ルート、ハンドラーを組み合わせ、製品の CRUD 操作、バッチ操作、製品コピー用のすぐに使用できる API エンドポイントを作成します。
🎯 概要
Product 機能ブロックは以下を目的として設計されています:
- 完全な製品管理を提供 完全な CRUD 操作付き
- 効率的な一括製品処理のためのバッチ操作をサポート
- 安全な製品操作のための検証とルーティングを含む
- 製品一覧のフィルタリングとページネーションをサポート
- 製品コピーと重複ワークフローを処理
📋 機能構造
各製品機能は、一貫した構成パターンに従います:
- スキーマ: 製品の入力データとパラメータを検証
- ルート: 製品ハンドラー付きの HTTP エンドポイントを提供
- 構成:
compose
関数を使用してスキーマとルートを組み合わせ
🔧 利用可能な Product 機能
createProductFeature
スキーマ検証とルーティング付きの製品作成機能。
目的: 完全な検証で製品作成を処理
構成:
- スキーマ:
createProductSchema
- 名前と説明を検証 - ルート:
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/:productId
使用法:
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
- オプションの名前と説明を検証 - ルート:
updateProductRoute
- 更新ハンドラー付き PATCH/products/:productId
使用法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーで dataStores が必要)
app.use('/api', defService(features.editProductFeatures));
// データベース構成付き
app.use('/api', defService(partial(features.editProductFeatures, [{ dataStores: db }])));
API エンドポイント: PATCH /api/products/:productId
editProductBatchFeatures
スキーマ検証とルーティング付きのバッチ製品更新機能。
目的: 検証付きでバッチ製品更新を処理
構成:
- スキーマ:
updateProductBatchSchema
- ID 配列とデータオブジェクトを検証 - ルート:
updateProductBatchRoute
- バッチ更新ハンドラー付き PATCH/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 エンドポイント: PATCH /api/products/batch
deleteProductFeatures
ルーティング付きの製品削除機能。
目的: アクセス制御とクリーンアップで製品を削除
構成:
- スキーマ:
deleteProductSchema
- パスパラメータを検証 - ルート:
deleteProductRoute
- 削除ハンドラー付き DELETE/products/:productId
使用法:
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/:productId/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
getProductImageUploadUrlFeature
製品画像をアップロードするための署名付き URL を生成します。
目的: ユニークなオブジェクト名付きで署名付きアップロード URL を発行し、生成された objectId とともに返します
構成:
- スキーマ:
getSignedImageUploadUrlSchema
- コンテンツタイプとファイルサイズを検証 - ルート:
getProductImageUploadUrlRoute
- GET/products/:productId/image-upload-url
使用法:
import { features } from '@nodeblocks/backend-sdk';
// ファイルストレージサービスを構成に含めて:
app.use(
'/api',
defService(partial(features.getProductImageUploadUrlFeature, [{ configuration: { fileStorageDriver } }]))
);
API エンドポイント: GET /api/products/:productId/image-upload-url