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

🔍 属性スキーマブロック

属性スキーマブロックは、Nodeblocks アプリケーションにおける属性セットのデータ検証のための JSON Schema 定義を提供します。これらのスキーマはデータの完全性を保証し、属性関連の API エンドポイントに対して明確な契約を提供します。


🎯 概要

属性スキーマブロックは次のことを目的として設計されています:

  • 処理前に属性セットデータを検証する
  • 柔軟なデータのためにキーと値のペア構造をサポートする
  • 属性操作全体でデータの一貫性を確保する
  • 属性の検索とフィルタリング機能を有効にする
  • 大規模な属性コレクションのページネーションをサポートする

📋 属性スキーマの種類

基本属性スキーマ

他のスキーマの土台として使用される中核となる属性セット構造。

属性作成スキーマ

必須フィールドの検証を伴う属性セット作成用スキーマ。

属性更新スキーマ

任意フィールドの検証を伴う属性セット変更用スキーマ。

属性クエリスキーマ

属性のフィルタリングおよびページネーション用パラメータのスキーマ。


🔧 利用可能な属性スキーマ

attributesSchema

属性セットデータの構造を定義する基本スキーマ。

目的: キーと値のペアを持つ属性セットの構造を定義します

スキーマ詳細:

  • Type: object
  • 必須フィールド: なし(ベーススキーマ)
  • 追加プロパティ: false(厳格な検証)
  • プロパティ:
    • name?: string - 属性セット名
    • items?: Array<{key: string, value: string}> - キーと値のペア(最小 1 項目)

使用例:

import { schemas } from '@nodeblocks/backend-sdk';

const { attributesSchema } = schemas;
const validate = ajv.compile(attributesSchema as SchemaDefinition);
const isValid = validate({
name: 'Product Attributes',
items: [{ key: 'color', value: 'red' }, { key: 'size', value: 'large' }]
});

createAttributesSchema

新しい属性セットのための必須フィールドを備えた属性作成スキーマ。

目的: 作成時に属性セットデータを検証します

スキーマ詳細:

  • Type: object
  • 必須フィールド: name, items
  • 追加プロパティ: false(厳格な検証)
  • Content-Type: application/json
  • Request Body: 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: 'Product Attributes',
items: [{ key: 'color', value: 'red' }, { key: 'size', value: 'large' }]
});

updateAttributesSchema

属性セット名を変更するための属性更新スキーマ。

目的: 属性セット名の部分更新を検証します

スキーマ詳細:

  • Type: object
  • 必須フィールド: なし
  • 追加プロパティ: false(厳格な検証)
  • Content-Type: application/json
  • Parameters: 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: 'Updated Product Attributes' });

getAttributeSchema

単一の属性セットを取得するための属性取得スキーマ。

目的: 特定の属性セットを取得するリクエストを検証します

スキーマ詳細:

  • Parameters: attributeId(パスパラメータ)
  • Purpose: 特定の属性セットを取得するリクエストを検証します

使用例:

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

属性セットを削除するための属性削除スキーマ。

目的: 特定の属性セットを削除するリクエストを検証します

スキーマ詳細:

  • Parameters: attributeId(パスパラメータ)
  • Purpose: 特定の属性セットを削除するリクエストを検証します

使用例:

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(ページネーション)
  • Purpose: 属性セットの検索およびページネーション用リクエストを検証します

使用例:

import { schemas } from '@nodeblocks/backend-sdk';

const { findAttributesSchema } = schemas;

const attributesSchema = findAttributesSchema({});
const validate = ajv.compile(attributesSchema.schemas as SchemaDefinition);
const isValid = validate({
name: 'Product',
page: 1,
limit: 10
});

🔗 関連ドキュメント