🔍 ユーザースキーマ
ユーザースキーマは、Nodeblocksアプリケーションでユーザーデータのバリデーション用のJSON Schema定義を提供します。これらのスキーマはデータの整合性を確保し、ユーザー関連のAPIエンドポイントの明確な契約を提供します。
🎯 概要
ユーザースキーマは以下の目的で設計されています:
- ユーザーデータのバリデーション - 処理前に行う
- ユーザーデータの一貫性の確保 - アプリケーション全体で
- 明確な契約の提供 - ユーザーAPIエンドポイント用
- 型安全性の有効化 - TypeScript統合で
- 他のユーザーブロックとのコンポジションのサポート - 他のユーザーブロックとのコンポジションをサポート
📋 ユーザースキーマタイプ
基本ユーザースキーマ
他のスキーマの基盤として使用されるコアユーザーエンティティ構造。
ユーザー作成スキーマ
必須フィールドバリデーション付きのユーザー登録用スキーマ。
ユーザー更新スキーマ
オプショナルフィールドバリデーション付きのプロフィール更新用スキーマ。
ユーザークエリスキーマ
ユーザーフィルタリングとページネーションパラメータ用のスキーマ。
🔧 利用可能なユーザースキーマ
userSchema
JSON Schemaバリデーション用の基本ユーザースキーマ定義。
目的: ユーザープロフィールデータバリデーション用の基本スキーマ
スキーマ詳細:
- Type:
object - Additional Properties:
false(厳密なバリデーション) - Properties:
identityId: string- リンクされたID識別子name: string- ユーザー表示名avatar?: Avatar | null- ユーザーアバターオブジェクトまたはnull
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { userSchema } = schemas;
const validate = ajv.compile(userSchema as SchemaDefinition);
const isValid = validate({
identityId: "identity-123",
name: "John Doe",
avatar: null
});
createUserSchema
ユーザー登録用の必須フィールドを含むユーザー作成スキーマ。
目的: IDにリンクされたユーザープロフィールの作成ペイロードをバリデーションします
スキーマ詳細:
- Type:
object - Required Fields:
identityId,name - Additional Properties:
false(厳密なバリデーション) - Content-Type:
application/json - Request Body:
required
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { createUserSchema } = schemas;
const userSchema = createUserSchema({});
const validate = ajv.compile(userSchema.schemas as SchemaDefinition);
const isValid = validate({
identityId: "identity-123",
name: "New User"
});
updateUserSchema
プロフィール変更用のオプショナルフィールドを含むユーザー更新スキーマ。
目的: ユーザープロフィールの部分更新をバリデーションします
スキーマ詳細:
- Type:
object - Required Fields: なし(すべてのフィールドがオプショナル)
- Additional Properties:
false(厳密なバリデーション) - Content-Type:
application/json - パラメータ:
profileId(パスパラメータ)
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { updateUserSchema } = schemas;
const userSchema = updateUserSchema({});
const validate = ajv.compile(userSchema.schemas as SchemaDefinition);
const isValid = validate({
name: "Jane Doe"
});
getUserSchema
単一ユーザーを取得するためのユーザー取得スキーマ。
目的: 特定のユーザーを取得するリクエストをバリデーションします。
スキーマ詳細:
- パラメータ:
profileId(パスパラメータ) - 目的: 特定のユーザーを取得するリクエストをバリデーションします
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { getUserSchema } = schemas;
const userSchema = getUserSchema({});
const validate = ajv.compile(userSchema.schemas as SchemaDefinition);
const isValid = validate({
profileId: 'profile123'
});
deleteUserSchema
ユーザーを削除するためのユーザー削除スキーマ。
目的: 特定のユーザーを削除するリクエストをバリデーションします。
スキーマ詳細:
- パラメータ:
profileId(パスパラメータ) - 目的: 特定のユーザーを削除するリクエストをバリデーションします
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { deleteUserSchema } = schemas;
const userSchema = deleteUserSchema({});
const validate = ajv.compile(userSchema.schemas as SchemaDefinition);
const isValid = validate({
profileId: 'profile123'
});
findUsersSchema
フィルタリングとページネーション付きでユーザーを検索するためのユーザー検索スキーマ。
目的: ユーザーの検索とページネーションのリクエストをバリデーションします。
スキーマ詳細:
- クエリパラメータ:
identityId?: string(IDによるオプショナルフィルター)name?: string(名前によるオプショナルフィルター)page?: number(ページネーション)limit?: number(ページネーション)
- 目的: ユーザーの検索とページネーションのリクエストをバリデーションします
使用例:
import { schemas } from '@nodeblocks/backend-sdk';
const { findUsersSchema } = schemas;
const usersSchema = findUsersSchema({});
const validate = ajv.compile(usersSchema.schemas as SchemaDefinition);
const isValid = validate({
name: 'John',
page: 1,
limit: 10
});
🔗 関連ドキュメント
- ユーザーハンドラー - ユーザービジネスロジック関数