🔍 ロケーションスキーマ
ロケーションスキーマは、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 }
]
});
🔗 関連ドキュメント
- ロケーションブロック - ロケーションビジネスロジック関数
- ロケーションルート - HTTPエンドポイント定義