メインコンテンツまでスキップ
バージョン: 0.4.2

🔍 属性スキーマブロック

属性スキーマブロックは、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
});

🔗 関連ドキュメント