🔍 商品スキーマブロック
商品スキーマブロックは、Nodeblocksアプリケーションにおける商品データ検証のためのJSONスキーマ定義を提供します。これらのスキーマは、データ整合性を確保し、商品関連のAPIエンドポイントの明確な契約を提供します。
🎯 概要
商品スキーマブロックは以下を目的として設計されています:
- 処理前の商品データの検証
- 商品属性とバリエーション管理のサポート
- 在庫追跡と価格設定の処理
- 商品検索とフィルタリング機能の実現
- バッチ操作と一括処理のサポート
- 商品カテゴリ化と組織化の提供
📋 商品スキーマ種類
ベース商品スキーマ
他のスキーマの基盤として使用されるコア商品構造。
商品作成スキーマ
必須フィールド検証による商品作成のためのスキーマ。
商品更新スキーマ
オプションフィールド検証による商品変更のためのスキーマ。
商品クエリスキーマ
商品フィルタリングとページネーションパラメータのためのスキーマ。
🔧 利用可能な商品スキーマ
productSchema
商品データの構造を定義するベース商品スキーマ。
目的: 価格と在庫情報付き商品データの構造を定義
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(ベーススキーマ)
- 追加プロパティ:
false
(厳密な検証) - プロパティ:
name?: string
- 商品名description?: string
- 商品説明price?: number
- 商品価格(最小0)currency?: string
- 価格通貨sku?: string
- 商品コード(SKU)stock?: number
- 在庫数(最小0)categoryId?: string
- カテゴリIDorganizationId?: string
- 組織IDstatus?: string
- 商品ステータス
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { productSchema } = schemas;
const productSchema = productSchema({});
const validate = ajv.compile(productSchema.schemas as SchemaDefinition);
const isValid = validate({
name: 'ワイヤレスヘッドホン',
description: '高品質なオーディオ体験',
price: 15000,
currency: 'JPY',
sku: 'WH-001',
stock: 50
});
createProductSchema
新しい商品のための必須フィールド付き商品作成スキーマ。
目的: 作成時の商品データを検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
name
,price
,currency
- オプションフィールド:
description
,sku
,stock
,categoryId
,organizationId
,status
- 追加プロパティ:
false
(厳密な検証) - コンテンツタイプ:
application/json
- リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { createProductSchema } = schemas;
const productSchema = createProductSchema({});
const validate = ajv.compile(productSchema.schemas as SchemaDefinition);
const isValid = validate({
name: 'スマートウォッチ',
description: '健康管理とフィットネス追跡',
price: 25000,
currency: 'JPY',
sku: 'SW-002',
stock: 30
});
updateProductSchema
商品変更のための商品更新スキーマ。
目的: 部分的な商品更新を検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(すべてオプション)
- オプションフィールド:
name
,description
,price
,currency
,sku
,stock
,categoryId
,status
- 追加プロパティ:
false
(厳密な検証) - パラメータ:
productId
(パスパラメータ)
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { updateProductSchema } = schemas;
const productSchema = updateProductSchema({});
const validate = ajv.compile(productSchema.schemas as SchemaDefinition);
const isValid = validate({
price: 22000,
stock: 25,
status: 'active'
});
📦 バッチ操作スキーマ
productBatchSchema
複数商品の一括操作のためのバッチスキーマ。
目的: バッチ操作で複数商品の処理を検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
products
- プロパティ:
products: Array<ProductData>
- 商品データの配列
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { productBatchSchema } = schemas;
const validate = ajv.compile(productBatchSchema);
const isValid = validate({
products: [
{ name: '商品A', price: 1000, currency: 'JPY' },
{ name: '商品B', price: 2000, currency: 'JPY' }
]
});
createProductBatchSchema
バッチ商品作成のための商品作成スキーマ。
目的: 一括作成のための商品データ配列を検証
スキーマ詳細:
- タイプ:
array
- 必須フィールド: 各項目に
name
,price
,currency
- 追加プロパティ:
false
(厳密な検証) - コンテンツタイプ:
application/json
- リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { createProductBatchSchema } = schemas;
const schema = createProductBatchSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate([
{ name: '商品A', price: 1000, currency: 'JPY' },
{ name: '商品B', price: 2000, currency: 'JPY' }
]);
updateProductBatchSchema
同じデータでの複数商品更新のための商品バッチ更新スキーマ。
目的: 商品IDと更新データによる一括更新を検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
ids
,data
- 追加プロパティ:
false
(厳密な検証) - コンテンツタイプ:
application/json
- リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { updateProductBatchSchema } = schemas;
const schema = updateProductBatchSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ ids: ['id1', 'id2'], data: { name: '更新' } });
deleteProductBatchSchema
IDによる複数商品削除のための商品バッチ削除スキーマ。
目的: 一括削除のための商品ID配列を検証
スキーマ詳細:
- タイプ:
array
- 項目:
string
(商品ID) - コンテンツタイプ:
application/json
- リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteProductBatchSchema } = schemas;
const schema = deleteProductBatchSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate(['id1', 'id2', 'id3']);
copyProductBatchSchema
IDによる複数商品複製のための商品バッチコピースキーマ。
目的: 一括複製のための商品ID配列を検証
スキーマ詳細:
- タイプ:
array
- 項目:
string
(商品ID) - コンテンツタイプ:
application/json
- リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { copyProductBatchSchema } = schemas;
const schema = copyProductBatchSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate(['id1', 'id2', 'id3']);
getProductSchema
IDによる単一商品取得のための商品取得スキーマ。
目的: 特定商品取得リクエストを検証
スキーマ詳細:
- パラメータ:
productId
(パスパラメータ) - 目的: 特定商品取得リクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { getProductSchema } = schemas;
const schema = getProductSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ productId: 'prod123' });
deleteProductSchema
IDによる商品削除のための商品削除スキーマ。
目的: 特定商品削除リクエストを検証
スキーマ詳細:
- パラメータ:
productId
(パスパラメータ) - 目的: 特定商品削除リクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteProductSchema } = schemas;
const schema = deleteProductSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ productId: 'prod123' });
copyProductSchema
IDによる商品複製のための商品コピースキーマ。
目的: 特定商品複製リクエストを検証
スキーマ詳細:
- パラメータ:
productId
(パスパラメータ) - 目的: 特定商品複製リクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { copyProductSchema } = schemas;
const schema = copyProductSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ productId: 'prod123' });
findProductsSchema
フィルタリングとページネーション付き商品検索のための商品検索スキーマ。
目的: 商品検索とページングリクエストを検証
スキーマ詳細:
- クエリパラメータ:
name?: string
- 商品名でのフィルタdescription?: string
- 商品説明でのフィルタpage?: number
- ページネーションのページ番号limit?: number
- ページネーションの制限
- 目的: 商品検索とページングリクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { findProductsSchema } = schemas;
const schema = findProductsSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ name: '商品', page: 1, limit: 10 });