🔍 Product スキーマブロック
Product スキーマブロックは、Nodeblocks アプリケーションにおける製品データ検証のための JSON Schema 定義を提供します。これらのスキーマはデータ整合性を確保し、製品関連 API エンドポイントのための明確なコントラクトを提供します。
🎯 概要
Product スキーマブロックは以下を目的として設計されています:
- 処理前に製品データを検証
- バルク製品管理のためのバッチ操作をサポート
- 製品の複製とコピー作業を有効化
- 製品検索とフィルタリング機能を処理
- さまざまなユースケースのための柔軟な製品構造を提供
- 効率的なバルク更新と削除をサポート
📋 Product スキーマタイプ
ベース製品スキーマ
他のスキーマの基礎として使用されるコア製品構造。
製品作成スキーマ
必須フィールド検証付きの製品作成スキーマ。
製品更新スキーマ
オプションのフィールド検証付きの製品変更スキーマ。
製品バッチ操作スキーマ
バッチ作成、更新、削除、複製のためのスキーマ。
製品クエリスクーマ
製品フィルタリングとページネーションパラメータのためのスキーマ。
🔧 利用可能な Product スキーマ
productSchema
製品データの構造を定義するベース製品スキーマ。
目的: 他のスキーマ間で再利用するための基本製品構造を定義
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし (ベーススキーマ)
- 追加プロパティ:
false
(厳密検証) - プロパティ:
name?: string
- 製品名description?: string
- 製品説明
使用法:
import { schemas } from '@nodeblocks/backend-sdk';
const { productSchema } = schemas;
const validate = ajv.compile(productSchema as SchemaDefinition);
const isValid = validate({ name: 'Product Name', description: 'Description' });
createProductSchema
新規製品のための必須フィールド付きの製品作成スキーマ。
目的: 作成時に製品データを検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
name
,description
- 追加プロパティ:
false
(厳密検証) - Content-Type:
application/json
- リクエストボディ:
required
使用法:
import { schemas } from '@nodeblocks/backend-sdk';
const { createProductSchema } = schemas;
const schema = createProductSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ name: 'Product Name', description: 'Description' });
updateProductSchema
製品変更のためのオプションのフィールド付きの製品更新スキーマ。
目的: 部分的な製品データ更新を検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし (すべてのフィールドがオプション)
- 追加プロパティ:
false
(厳密検証) - Content-Type:
application/json
- パラメータ:
productId
(パスパラメータ) - リクエストボディ:
required
使用法:
import { schemas } from '@nodeblocks/backend-sdk';
const { updateProductSchema } = schemas;
const schema = updateProductSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ description: 'Updated description' });
createProductBatchSchema
一度に複数の製品を作成するための製品バッチ作成スキーマ。
目的: バルク作成のために製品データの配列を検証
スキーマ詳細:
- タイプ:
array
- 必須フィールド:
name
,description
(各アイテムに対して) - 追加プロパティ:
false
(厳密検証) - Content-Type:
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: 'Product 1', description: 'Desc 1' },
{ name: 'Product 2', description: 'Desc 2' }
]);
updateProductBatchSchema
同じデータで複数の製品を更新するための製品バッチ更新スキーマ。
目的: 製品 ID と更新データによるバルク製品更新を検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
ids
,data
- 追加プロパティ:
false
(厳密検証) - Content-Type:
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: 'Updated' } });
deleteProductBatchSchema
ID によって複数の製品を削除するための製品バッチ削除スキーマ。
目的: バルク削除のために製品 ID の配列を検証
スキーマ詳細:
- タイプ:
array
- アイテム:
string
(製品 ID) - Content-Type:
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) - Content-Type:
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: 'Product', page: 1, limit: 10 });
🔗 関連ドキュメント
- Product ドメイン概要 - Product ドメイン概要