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

🔍 ユーザースキーマ

ユーザースキーマは、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
});

🔗 関連ドキュメント