🔍 属性スキーマブロック
属性スキーマブロックは、Nodeblocksアプリケーションにおける属性セットデータ検証のためのJSONスキーマ定義を提供します。これらのスキーマは、データ整合性を確保し、属性関連のAPIエンドポイントの明確な契約を提供します。
🎯 概要
属性スキーマブロックは以下を目的として設計されています:
- 処理前の属性セットデータの検証
- 柔軟なデータのためのキー・バリューペア構造のサポート
- 属性操作全体でのデータ一貫性の確保
- 属性検索とフィルタリング機能の実現
- 大規模属性コレクションのためのページネーションのサポート
📋 属性スキーマ種類
ベース属性スキーマ
他のスキーマの基盤として使用されるコア属性セット構造。
属性作成スキーマ
必須フィールド検証による属性セット作成のためのスキーマ。
属性更新スキーマ
オプションフィールド検証による属性セット変更のためのスキーマ。
属性クエリスキーマ
属性フィルタリングとページネーションパラメータのためのスキーマ。
🔧 利用可能な属性スキーマ
attributesSchema
属性セットデータの構造を定義するベース属性スキーマ。
目的: キー・バリューペアによる属性セットの構造を定義
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし(ベーススキーマ)
- 追加プロパティ:
false
(厳密な検証) - プロパティ:
name?: string
- 属性セット名items?: Array<{key: string, value: string}>
- キー・バリューペア(最小1項目)
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { attributesSchema } = schemas;
const attributesSchema = attributesSchema({});
const validate = ajv.compile(attributesSchema.schemas as SchemaDefinition);
const isValid = validate({
name: '商品属性',
items: [{ key: 'color', value: 'red' }, { key: 'size', value: 'large' }]
});
createAttributesSchema
新しい属性セットのための必須フィールド付き属性作成スキーマ。
目的: 作成時の属性セットデータを検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド:
name
,items
- 追加プロパティ:
false
(厳密な検証) - コンテンツタイプ:
application/json
- リクエストボディ:
required
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { createAttributesSchema } = schemas;
const attributesSchema = createAttributesSchema({});
const validate = ajv.compile(attributesSchema.schemas as SchemaDefinition);
const isValid = validate({
name: '商品属性',
items: [{ key: 'color', value: 'red' }, { key: 'size', value: 'large' }]
});
updateAttributesSchema
属性セット名変更のための属性更新スキーマ。
目的: 部分的な属性セット名更新を検証
スキーマ詳細:
- タイプ:
object
- 必須フィールド: なし
- 追加プロパティ:
false
(厳密な検証) - コンテンツタイプ:
application/json
- パラメータ:
attributeId
(パスパラメータ) - プロパティ:
name?: string
- 更新された属性セット名
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { updateAttributesSchema } = schemas;
const attributesSchema = updateAttributesSchema({});
const validate = ajv.compile(attributesSchema.schemas as SchemaDefinition);
const isValid = validate({ name: '更新された商品属性' });
getAttributeSchema
単一属性セット取得のための属性取得スキーマ。
目的: 特定の属性セット取得リクエストを検証
スキーマ詳細:
- パラメータ:
attributeId
(パスパラメータ) - 目的: 特定の属性セット取得リクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { getAttributeSchema } = schemas;
const attributeSchema = getAttributeSchema({});
const validate = ajv.compile(attributeSchema.schemas as SchemaDefinition);
const isValid = validate({
attributeId: 'attr123'
});
deleteAttributeSchema
属性セット削除のための属性削除スキーマ。
目的: 特定の属性セット削除リクエストを検証
スキーマ詳細:
- パラメータ:
attributeId
(パスパラメータ) - 目的: 特定の属性セット削除リクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteAttributeSchema } = schemas;
const attributeSchema = deleteAttributeSchema({});
const validate = ajv.compile(attributeSchema.schemas as SchemaDefinition);
const isValid = validate({
attributeId: 'attr123'
});
findAttributesSchema
フィルタリングとページネーション付き属性セット検索のための属性検索スキーマ。
目的: 属性セットの検索とページング リクエストを検証
スキーマ詳細:
- クエリパラメータ:
name?: string
(名前でのオプションフィルタ)page?: number
(ページネーション)limit?: number
(ページネーション)
- 目的: 属性セットの検索とページング リクエストを検証
使用方法:
import { schemas } from '@nodeblocks/backend-sdk';
const { findAttributesSchema } = schemas;
const attributesSchema = findAttributesSchema({});
const validate = ajv.compile(attributesSchema.schemas as SchemaDefinition);
const isValid = validate({
name: '商品',
page: 1,
limit: 10
});
🔗 関連ドキュメント
- 属性ドメイン概要 - 属性ドメインの概要