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

🔍 ロケーションスキーマ

ロケーションスキーマは、NodeBlocksアプリケーションでロケーションデータバリデーション用のJSONスキーマ定義を提供します。これらのスキーマはデータ整合性を確保し、ロケーション関連のAPIエンドポイントの明確なコントラクトを提供します。


🎯 概要

ロケーションスキーマは以下の目的で設計されています:

  • 処理前にロケーションデータをバリデーションします
  • アプリケーション全体でロケーションデータの一貫性を確保します
  • ロケーションAPIエンドポイントの明確なコントラクトを提供します
  • TypeScript統合による型安全性を有効化します
  • 他のロケーションブロックとの合成をサポートします
  • 親子バリデーションを含む階層関係を処理します

📋 ロケーションスキーマタイプ

基本ロケーションスキーマ

他のスキーマの基礎として使用されるコアロケーションエンティティ構造。

ロケーション作成スキーマ

必須フィールドバリデーションと階層的な親サポートを含むロケーション作成用のスキーマ。

ロケーション取得スキーマ

識別子バリデーションを含む特定のロケーションを取得するためのスキーマ。

ロケーション更新スキーマ

オプションフィールドバリデーションを含むロケーション変更用のスキーマ。

ロケーション検索スキーマ

ロケーションフィルタリングとページネーションパラメータ用のスキーマ。

ロケーション削除スキーマ

ロケーション削除操作用のスキーマ。


🔧 利用可能なロケーションスキーマ

locationSchema

ロケーションエンティティのコアプロパティを含むロケーション基本スキーマ。

目的: 必須フィールドとオプションフィールドを含むすべてのロケーションエンティティの基本構造を定義します。

スキーマ詳細:

  • Type: object
  • プロパティ: code (string), name (string), type (string)
  • 追加プロパティ: false (厳密なバリデーション)

使用例:

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

const { locationSchema } = schemas;

// Use in schema composition
export const customLocationSchema = withSchema({
requestBody: {
content: {
'application/json': {
schema: {
...locationSchema,
required: ['name', 'code', 'type']
}
}
}
}
});

createLocationSchema

新しいロケーション登録用の必須フィールドバリデーションを含むロケーション作成スキーマ。

目的: 適切な階層的な親サポートと必須フィールドバリデーションを含む新しいロケーション作成リクエストをバリデーションします。

スキーマ詳細:

  • リクエストボディ: required
  • Content-Type: application/json
  • プロパティ:
    • name: string (required) - 人間が読めるロケーション名
    • code: string (required) - 一意のロケーション識別子コード
    • type: string (required) - ロケーションタイプ分類(例:'ORGANIZATION', 'REGION', 'CITY', 'BUILDING')
    • parentId: string (optional) - 階層関係のための親ロケーションのID
  • 追加プロパティ: false (厳密なバリデーション)

使用例:

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

const { createLocationSchema } = schemas;

const schema = createLocationSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
requestBody: {
content: {
'application/json': {
schema: {
name: 'Downtown Office',
code: 'DTO-001',
type: 'BUILDING',
parentId: 'city-123'
}
}
}
}
});

getLocationSchema

単一ロケーション検索用のパスパラメータバリデーションを含むロケーション取得スキーマ。

目的: 適切なパスパラメータバリデーションを含むIDによる個別ロケーション取得リクエストをバリデーションします。

スキーマ詳細:

  • パラメータ: locationId (path parameter, required)
  • Type: Path parameter validation only
  • リクエストボディ: 該当なし(GETリクエスト)

使用例:

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

const { getLocationSchema } = schemas;

const schema = getLocationSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [{ locationId: 'loc-123' }]
});

updateLocationSchema

部分的なロケーション更新用のオプションフィールドバリデーションを含むロケーション更新スキーマ。

目的: 部分的なフィールド変更を含む既存のロケーション更新リクエストをバリデーションし、柔軟な更新操作をサポートします。

スキーマ詳細:

  • パラメータ: locationId (path parameter, required)
  • リクエストボディ: required
  • Content-Type: application/json
  • プロパティ:
    • name: string (optional) - 人間が読めるロケーション名
    • code: string (optional) - 一意のロケーション識別子コード
    • type: string (optional) - ロケーションタイプ分類
  • 追加プロパティ: false (厳密なバリデーション)

使用例:

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

const { updateLocationSchema } = schemas;

const schema = updateLocationSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [{ locationId: 'loc-123' }],
requestBody: {
content: {
'application/json': {
schema: {
name: 'Updated Name'
}
}
}
}
});

deleteLocationSchema

ロケーション削除用のパスパラメータバリデーションを含むロケーション削除スキーマ。

目的: 適切なパスパラメータバリデーションとセキュリティ制約を含む既存のロケーション削除リクエストをバリデーションします。

スキーマ詳細:

  • パラメータ: locationId (path parameter, required)
  • Type: Path parameter validation only
  • リクエストボディ: 該当なし(DELETEリクエスト)

使用例:

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

const { deleteLocationSchema } = schemas;

const schema = deleteLocationSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [{ locationId: 'loc-123' }]
});

findLocationsSchema

ページネーションクエリバリデーションを含むロケーション検索スキーマ。

目的: ページネーションパラメータを含むロケーション検索およびリスト表示リクエストをバリデーションし、拡張可能なロケーション発見の基盤を提供します。

スキーマ詳細:

  • Type: Query parameter validation only
  • クエリパラメータ: page (optional, 1-1000), limit (optional, 1-50)
  • リクエストボディ: 該当なし(GETリクエスト)

使用例:

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

const { findLocationsSchema } = schemas;

const schema = findLocationsSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
parameters: [
{ in: 'query', name: 'page', value: 2 },
{ in: 'query', name: 'limit', value: 20 }
]
});

🔗 関連ドキュメント