🛍️ 製品ブロック
製品ブロックは、Nodeblocksアプリケーションにおける製品管理のための包括的な機能を提供します。これらのブロックは、作成、カタログ管理、在庫追跡を含む製品ライフサイクル操作を処理します。
🎯 概要
製品ブロックは以下の目的で設計されています:
- 完全なCRUD操作で製品カタログを管理
- 在庫とカスタマイズ管理のための製品バリアントを処理
- メタデータと自動エンティティ生成を含む製品画像を処理
- APIレスポンスで画像の署名付きURLを使用して製品データを正規化
- 製品属性とバリエーションを処理
- 製品検証とビジネスルールを提供
- 在庫管理と追跡をサポート
- 包括的なコントロールで製品管理を有効化
📦 ブロックタイプ
🔍 スキーマ
製品データ検証のためのJSON Schema定義:
- productSchema: ベース製品エンティティ構造
- productImageSchema: 製品画像メタデータ構造
- createProductImageSchema: 製品画像作成検証
- deleteProductImageSchema: 製品画像削除検証
- imageIdPathParameter: 画像IDのパスパラメータ
- ProductImage: 製品画像データのTypeScript型
- NormalizedProductImage: URL付き正規化製品画像のTypeScript型
- createProductSchema: 画像付き製品作成検証
- updateProductSchema: 製品更新検証
- createProductBatchSchema: 画像付きバッチ作成検証
- updateProductBatchSchema: バッチ更新検証
- deleteProductBatchSchema: バッチ削除検証
- copyProductBatchSchema: バッチコピー検証
- getProductSchema: 単一製品取得検証
- deleteProductSchema: 製品削除検証
- copyProductSchema: 製品コピー検証
- findProductsSchema: フィルタリングとページネーション付き製品検索
- createProductVariantBulkSchema: 配列検証付き製品バリアント一括作成
- updateProductVariantBulkSchema: 一括操作検証付き製品バリアント一括更新
- deleteProductVariantBulkSchema: バリアントID配列検証付き製品バリアント一括削除
- createProductVariantSchema: 必須タイトル検証付き製品バリアント作成
- getProductVariantSchema: パスパラメータ付き製品バリアント取得
- updateProductVariantSchema: オプションフィールド付き製品バリアント更新
- deleteProductVariantSchema: パスパラメータ付き製品バリアント削除
- findProductVariantsSchema: ページネーション検証付き製品バリアント一覧
- getProductLikersSchema: 製品いいねユーザー取得検証
🧱 ブロック関数
製品操作とデータ変換のための純粋関数:
製品取得:
- getProductById: 製品コレクションからIDで製品を取得
- findProducts: フィルタ条件に基づいてデータベースコレクションから製品を取得
製品バリアント管理:
- createProductVariant: 既存の製品の新しい製品バリアントを作成
- createProductVariantBulk: 単一のデータベース操作内で複数の製品バリアントを一括作成
- updateProductVariant: 単一の製品バリアントを更新
- updateProductVariantBulk: データベースコレクション更新操作を介して複数の製品バリアントを一括更新
- deleteProductVariant: 単一の製品バリアントを削除
- deleteProductVariantBulk: MongoDBコレクションから複数の製品バリアントを一括削除
- getProductVariantById: オプションの製品スコープ付きでIDで製品バリアントを取得
- findProductVariants: 特定の製品の製品バリアントを検索
- buildFilterToGetProductVariantsByProductId: 製品IDで製品バリアントを取得するためのデータベースフィルタを構築
- buildFilterToGetProductVariantsByIds: IDで製品バリアントを取得するためのデータベースフィルタを構築
製品正規化:
- normalizeProduct: _idフィールドを削除して単一の製品を正規化
- normalizeProducts: _idフィールドを削除して複数の製品を正規化
製品画像正規化:
- normalizeProductImage: 署名付きダウンロードURLを生成して単一の製品画像を正規化
- normalizeImagesOfProduct: 署名付きURLを使用して単一の製品の画像を正規化
- normalizeImagesOfProducts: 署名付きURLを使用して複数の製品の画像を正規化
製品画像管理:
- generateProductImageUploadUrl: 製品画像アップロード用の署名付きURLを生成
- createProductImage: 新しい製品画像を作成し、製品の画像配列に追加
- getProductImageById: IDで特定の製品画像を取得
- deleteProductImage: 製品から特定の製品画像を削除
- deleteImagesOfProduct: ファイルストレージから製品に関連付けられたすべての画像を削除
クエリビルダーブロック:
- findProductResources: 柔軟なフィルタリングで製品リソースを検索
- buildProductLikersByLikeProductIdQuery: 製品いいねユーザー用のMongoDBクエリを構築
エラークラス:
- ProductBlockError: 製品関連ブロック操作の基本エラークラス
- ProductNotFoundBlockError: 製品が見つからないエラー
- ProductUnexpectedDBError: 製品の予期しないデータベースエラー
- ProductImageNotFoundBlockError: 製品画像が見つからないエラー
- ProductDbError: 製品データベース操作エラー
- ProductVariantError: 製品バリアント操作の基本エラークラス
- ProductVariantDbError: 製品バリアントデータベース操作エラー
- ProductVariantNotFoundError: 製品バリアントが見つからないエラー
⚙️ ハンドラー
製品操作のためのコアビジネスロジック:
- createProduct: 製品作成
- createProductBatch: バッチ製品作成
- getProductById: 製品データ取得(非推奨 - 代わりにブロック関数を使用)
- getProductsByIds: IDで複数の製品を取得
- updateProduct: 製品更新
- updateProductBatch: バッチ製品更新
- deleteProduct: 製品削除
- deleteProductBatch: バッチ製品削除
- copyProduct: 製品コピー
- copyProductBatch: バッチ製品コピー
- findProducts: 製品検索とフィルタリング(非推奨 - 代わりにブロック関数を使用)
- normalizeProductTerminator: 単一製品レスポンスを正規化
- normalizeProductsListTerminator: 製品リストレスポンスを正規化
- deleteProductTerminator: 製品削除用の204レスポンスをフォーマット
- deleteBatchProductsTerminator: バッチ製品削除用の204レスポンスをフォーマット
🛣️ ルート
製品操作のためのHTTPエンドポイント定義:
- createProductRoute: 作成ハンドラー付きPOST
/products - createProductBatchRoute: バッチ作成ハンドラー付きPOST
/products/batch - createProductVariantRoute: 製品バリアント作成用POST
/products/:productId/variants - createProductVariantBulkRoute: 製品バリアント一括作成用POST
/product/:productId/variants/bulk - updateProductVariantBulkRoute: 製品バリアント一括更新用PATCH
/product/:productId/variants/bulk - deleteProductVariantBulkRoute: 製品バリアント一括削除用POST
/product/:productId/variants/bulk-delete - findProductVariantsRoute: ページネーション付き製品バリアント一覧取得用GET
/products/:productId/variants - getProductVariantRoute: 製品バリアント取得用GET
/products/:productId/variants/:productVariantId - updateProductVariantRoute: 製品バリアント更新用PATCH
/products/:productId/variants/:productVariantId - deleteProductVariantRoute: 製品バリアント削除用DELETE
/products/:productId/variants/:productVariantId - getProductRoute: 取得ハンドラー付きGET
/products/:productId - findProductsRoute: 検索とページネーション付きGET
/products - getProductImageUploadUrlRoute: 署名付きアップロードURL用GET
/products/:productId/image-upload-url - createProductImageRoute: 製品への画像追加用POST
/products/:productId/images - deleteProductImageRoute: 製品からの画像削除用DELETE
/products/:productId/images/:imageId - updateProductRoute: 更新ハンドラー付きPATCH
/products/:productId - updateProductBatchRoute: バッチ更新ハンドラー付きPATCH
/products/batch - deleteProductRoute: 削除ハンドラー付きDELETE
/products/:productId - deleteProductBatchRoute: バッチ削除ハンドラー付きDELETE
/products/batch - copyProductRoute: コピーハンドラー付きPOST
/products/:productId/copy - copyProductBatchRoute: バッチコピーハンドラー付きPOST
/products/batch/copy - findProductsByOrganizationIdRoute: 組織スコープの製品取得付きGET
/products/organizations/:organizationId - getProductLikersRoute: 製品いいねユーザー取得とページネーション付きGET
/products/:productId/likers
🚀 機能
スキーマ、ルート、ハンドラーを組み合わせた完全な製品管理機能:
- createProductFeature: スキーマ検証とルーティング付き製品作成
- createProductBatchFeature: スキーマ検証とルーティング付きバッチ製品作成
- createProductVariantFeature: スキーマ検証とルーティング付き製品バリアント作成
- createProductVariantBulkFeature: スキーマ検証とルーティング付き製品バリアント一括作成
- updateProductVariantBulkFeature: スキーマ検証とルーティング付き製品バリアント一括更新
- deleteProductVariantBulkFeature: スキーマ検証とルーティング付き製品バリアント一括削除
- findProductVariantsFeature: ページネーション、スキーマ検証、ルーティング付き製品バリアント一覧
- getProductVariantFeature: スキーマ検証とルーティング付き製品バリアント取得
- updateProductVariantFeature: スキーマ検証とルーティング付き製品バリアント更新
- deleteProductVariantFeature: スキーマ検証とルーティング付き製品バリアント削除
- getProductFeatures: 個別製品データ取得用製品取得
- findProductsFeatures: フィルタリングとページネーション付き製品検索
- editProductFeatures: スキーマ検証とルーティング付き製品更新
- editProductBatchFeatures: スキーマ検証とルーティング付きバッチ製品更新
- deleteProductFeatures: ルーティング付き製品削除
- deleteProductBatchFeatures: スキーマ検証とルーティング付きバッチ製品削除
- copyProductFeatures: ルーティング付き製品コピー
- copyProductBatchFeatures: スキーマ検証とルーティング付きバッチ製品コピー
- getProductImageUploadUrlFeature: 製品画像アップロードURL生成
- createProductImageFeature: スキーマ検証とルーティング付き製品画像作成
- deleteProductImageFeature: スキーマ検証とファイルストレージクリーンアップ付き製品画像削除
- findProductsByOrganizationIdFeature: ページネーション付き組織スコープの製品取得
- getProductLikersFeature: ページネーションとアバター正規化付き製品いいねユーザー取得