メインコンテンツまでスキップ
バージョン: 0.4.2

🔍 ユーザースキーマブロック

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


🎯 概要

ユーザースキーマブロックは以下を目的として設計されています:

  • 処理前のユーザーデータの検証
  • アプリケーション全体でのユーザーデータ一貫性の確保
  • ユーザーAPIエンドポイントの明確な契約の提供
  • TypeScript統合による型安全性の実現
  • 他のユーザーブロックとのコンポジションのサポート

📋 ユーザースキーマ種類

ベースユーザースキーマ

他のスキーマの基盤として使用されるコアユーザーエンティティ構造。

ユーザー作成スキーマ

必須フィールド検証によるユーザー登録のためのスキーマ。

ユーザー更新スキーマ

オプションフィールド検証によるプロフィール更新のためのスキーマ。

ユーザークエリスキーマ

ユーザーフィルタリングとページネーションパラメータのためのスキーマ。


🔧 利用可能なユーザースキーマ

userSchema

JSONスキーマ検証のためのベースユーザースキーマ定義。

目的: アプリケーション全体でのユーザーデータ検証のためのベーススキーマ

スキーマ詳細:

  • タイプ: object
  • 追加プロパティ: false(厳密な検証)
  • プロパティ:
    • email: string - ユーザーメールアドレス(メールフォーマット)
    • name?: string - ユーザー表示名
    • status?: string - ユーザーアカウントステータス

使用方法:

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

const { userSchema } = schemas;

const baseUserSchema = userSchema({});
const validate = ajv.compile(baseUserSchema.schemas as SchemaDefinition);
const isValid = validate({
email: 'user@example.com',
name: 'John Doe',
status: 'active'
});

createUserSchema

必須フィールド検証による新しいユーザー作成のためのスキーマ。

目的: ユーザー登録リクエストの検証

スキーマ詳細:

  • タイプ: object
  • 必須フィールド: email
  • オプションフィールド: name, status
  • 追加プロパティ: false(厳密な検証)
  • コンテンツタイプ: application/json
  • リクエストボディ: required

使用方法:

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

const { createUserSchema } = schemas;

const createSchema = createUserSchema({});
const validate = ajv.compile(createSchema.schemas as SchemaDefinition);
const isValid = validate({
email: 'user@example.com',
name: 'John Doe'
});

updateUserSchema

オプションフィールド検証によるユーザープロフィール更新のためのスキーマ。

目的: ユーザープロフィール更新リクエストの検証

スキーマ詳細:

  • タイプ: object
  • 必須フィールド: なし(すべてオプション)
  • オプションフィールド: email, name, status
  • 追加プロパティ: false(厳密な検証)
  • コンテンツタイプ: application/json
  • リクエストボディ: required

使用方法:

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

const { updateUserSchema } = schemas;

const updateSchema = updateUserSchema({});
const validate = ajv.compile(updateSchema.schemas as SchemaDefinition);
const isValid = validate({
name: 'Updated Name',
status: 'verified'
});

getUserSchema

単一ユーザー取得のためのユーザースキーマ。

目的: 特定ユーザー取得リクエストの検証

スキーマ詳細:

  • パラメータ: userId(パスパラメータ)
  • 目的: 特定ユーザー取得リクエストの検証

使用方法:

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

const { getUserSchema } = schemas;

const userSchema = getUserSchema({});
const validate = ajv.compile(userSchema.schemas as SchemaDefinition);
const isValid = validate({
userId: 'user123'
});

deleteUserSchema

ユーザー削除のためのユーザースキーマ。

目的: 特定ユーザー削除リクエストの検証

スキーマ詳細:

  • パラメータ: userId(パスパラメータ)
  • 目的: 特定ユーザー削除リクエストの検証

使用方法:

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

const { deleteUserSchema } = schemas;

const userSchema = deleteUserSchema({});
const validate = ajv.compile(userSchema.schemas as SchemaDefinition);
const isValid = validate({
userId: 'user123'
});

lockUserSchema

ユーザーアカウントロックのためのユーザーロックスキーマ。

目的: 特定ユーザーアカウントのロックリクエストを検証

スキーマ詳細:

  • パラメータ: userId(パスパラメータ)
  • 目的: 特定ユーザーアカウントのロックリクエストを検証

使用方法:

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

const { lockUserSchema } = schemas;

const userSchema = lockUserSchema({});
const validate = ajv.compile(userSchema.schemas as SchemaDefinition);
const isValid = validate({
userId: 'user123'
});

unlockUserSchema

ユーザーアカウントアンロックのためのユーザーアンロックスキーマ。

目的: 特定ユーザーアカウントのアンロックリクエストを検証

スキーマ詳細:

  • パラメータ: userId(パスパラメータ)
  • 目的: 特定ユーザーアカウントのアンロックリクエストを検証

使用方法:

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

const { unlockUserSchema } = schemas;

const userSchema = unlockUserSchema({});
const validate = ajv.compile(userSchema.schemas as SchemaDefinition);
const isValid = validate({
userId: 'user123'
});

findUsersSchema

フィルタリングとページネーション付きユーザー検索のためのユーザー検索スキーマ。

目的: ユーザー検索とページングリクエストの検証

スキーマ詳細:

  • クエリパラメータ:
    • email?: string(メールでのオプションフィルタ)
    • name?: string(名前でのオプションフィルタ)
    • status?: 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({
status: 'active',
page: 1,
limit: 10
});

🔗 関連ドキュメント