メインコンテンツまでスキップ
バージョン: 0.5.0 (最新)

🔍 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 });

🔗 関連ドキュメント