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

🔍 チャットスキーマブロック

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


🎯 概要

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

  • 処理前のチャットデータの検証
  • リアルタイム通信のメッセージ構造サポート
  • チャンネル管理と階層構成の処理
  • サブスクリプション管理と通知システムの実現
  • メッセージ履歴と検索機能のサポート
  • マルチチャンネルアーキテクチャの提供

📋 チャットスキーマ種類

チャンネルスキーマ

チャットチャンネル管理のためのスキーマ。

メッセージスキーマ

チャットメッセージと通信のためのスキーマ。

サブスクリプションスキーマ

通知とサブスクリプション管理のためのスキーマ。


🔧 利用可能なチャットスキーマ

chatChannelSchema

コアチャンネルフィールド付きベースチャットチャンネルスキーマ。

目的: チャット機能のためのベースチャンネル構造を定義

スキーマ詳細:

  • タイプ: object
  • 必須フィールド: なし(ベーススキーマ)
  • 追加プロパティ: false(厳密な検証)
  • プロパティ:
    • name?: string - チャンネル名
    • ownerId?: string - チャンネルオーナーユーザーID

使用方法:

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

const { chatChannelSchema } = schemas;

const schema = chatChannelSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
name: '一般チャット',
ownerId: 'user123'
});

createChatChannelSchema

必須の名前とオーナー付きチャットチャンネル作成スキーマ。

目的: 作成時のチャンネルデータを検証

スキーマ詳細:

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

使用方法:

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

const { createChatChannelSchema } = schemas;

const schema = createChatChannelSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
name: '一般チャット',
ownerId: 'user123'
});

updateChatChannelSchema

チャンネル変更のためのオプションフィールド付きチャットチャンネル更新スキーマ。

目的: 部分的なチャンネルデータ更新を検証

スキーマ詳細:

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

使用方法:

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

const { updateChatChannelSchema } = schemas;

const schema = updateChatChannelSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ name: '更新されたチャンネル名' });

getChatChannelSchema

単一チャンネル取得のためのチャットチャンネル取得スキーマ。

目的: 特定チャットチャンネル取得リクエストを検証

スキーマ詳細:

  • パラメータ: channelId(パスパラメータ)
  • 目的: 特定チャットチャンネル取得リクエストを検証

使用方法:

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

const { getChatChannelSchema } = schemas;

const schema = getChatChannelSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ channelId: 'channel123' });

deleteChatChannelSchema

チャンネル削除のためのチャットチャンネル削除スキーマ。

目的: 特定チャットチャンネル削除リクエストを検証

スキーマ詳細:

  • パラメータ: channelId(パスパラメータ)
  • 目的: 特定チャットチャンネル削除リクエストを検証

使用方法:

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

const { deleteChatChannelSchema } = schemas;

const schema = deleteChatChannelSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ channelId: 'channel123' });

findChatChannelsSchema

フィルタリングとページネーション付きチャットチャンネル検索スキーマ。

目的: チャットチャンネルの検索とページングリクエストを検証

スキーマ詳細:

  • クエリパラメータ:
    • name?: string - チャンネル名でのフィルタ
    • ownerId?: string - オーナーでのフィルタ
    • page?: number - ページネーションのページ番号
    • limit?: number - ページネーションの制限
  • 目的: チャットチャンネルの検索とページングリクエストを検証

使用方法:

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

const { findChatChannelsSchema } = schemas;

const schema = findChatChannelsSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ name: '一般', page: 1, limit: 10 });

💬 メッセージスキーマ

chatMessageSchema

コアメッセージフィールド付きベースチャットメッセージスキーマ。

目的: チャット機能のためのベースメッセージ構造を定義

スキーマ詳細:

  • タイプ: object
  • 必須フィールド: なし(ベーススキーマ)
  • 追加プロパティ: false(厳密な検証)
  • プロパティ:
    • content?: string - メッセージ内容
    • senderId?: string - メッセージ送信者ユーザーID
    • title?: string - メッセージタイトル

使用方法:

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

const { chatMessageSchema } = schemas;

const schema = chatMessageSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
content: 'こんにちは世界!',
senderId: 'user123',
title: '挨拶'
});

createChatMessageSchema

必須のコンテンツ、送信者、チャンネル付きチャットメッセージ作成スキーマ。

目的: 作成時のメッセージデータを検証

スキーマ詳細:

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

使用方法:

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

const { createChatMessageSchema } = schemas;

const schema = createChatMessageSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
content: 'こんにちは世界!',
senderId: 'user123',
channelId: 'channel456'
});

updateChatMessageSchema

メッセージ変更のためのオプションフィールド付きチャットメッセージ更新スキーマ。

目的: 部分的なメッセージデータ更新を検証

スキーマ詳細:

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

使用方法:

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

const { updateChatMessageSchema } = schemas;

const schema = updateChatMessageSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ content: '更新されたメッセージ内容' });

getChatMessageSchema

単一メッセージ取得のためのチャットメッセージ取得スキーマ。

目的: 特定チャットメッセージ取得リクエストを検証

スキーマ詳細:

  • パラメータ: messageId(パスパラメータ)
  • 目的: 特定チャットメッセージ取得リクエストを検証

使用方法:

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

const { getChatMessageSchema } = schemas;

const schema = getChatMessageSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ messageId: 'message123' });

deleteChatMessageSchema

メッセージ削除のためのチャットメッセージ削除スキーマ。

目的: 特定チャットメッセージ削除リクエストを検証

スキーマ詳細:

  • パラメータ: messageId(パスパラメータ)
  • 目的: 特定チャットメッセージ削除リクエストを検証

使用方法:

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

const { deleteChatMessageSchema } = schemas;

const schema = deleteChatMessageSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ messageId: 'message123' });

findChatMessagesSchema

フィルタリングとページネーション付きチャットメッセージ検索スキーマ。

目的: 特定チャンネル内でのチャットメッセージの検索とページングリクエストを検証

スキーマ詳細:

  • クエリパラメータ:
    • channelId: string - 必須のチャンネルでのフィルタ
    • content?: string - オプションのメッセージ内容でのフィルタ
    • senderId?: string - オプションの送信者でのフィルタ
    • title?: string - オプションのメッセージタイトルでのフィルタ
    • page?: number - ページネーションのページ番号
    • limit?: number - ページネーションの制限
  • 目的: チャットメッセージの検索とページングリクエストを検証

使用方法:

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

const { findChatMessagesSchema } = schemas;

const schema = findChatMessagesSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
channelId: 'channel123',
senderId: 'user123',
page: 1,
limit: 10
});

🔔 サブスクリプションスキーマ

chatSubscriptionSchema

コアサブスクリプションフィールド付きベースチャットサブスクリプションスキーマ。

目的: チャットチャンネルのベースサブスクリプション構造を定義

スキーマ詳細:

  • タイプ: object
  • 必須フィールド: なし(ベーススキーマ)
  • 追加プロパティ: false(厳密な検証)
  • プロパティ:
    • approved?: boolean - サブスクリプション承認ステータス
    • permissions?: string[] - ユーザー権限配列
    • subscribedAt?: string - サブスクリプション日時(date-timeフォーマット)
    • subscribedId?: string - サブスクライバーID
    • channelId?: string - チャンネルID

使用方法:

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

const { chatSubscriptionSchema } = schemas;

const schema = chatSubscriptionSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
channelId: 'channel123',
subscribedId: 'user456',
approved: true,
permissions: ['read', 'write']
});

createChatSubscriptionSchema

必須のチャンネルID付きチャットサブスクリプション作成スキーマ。

目的: 作成時のサブスクリプションデータを検証

スキーマ詳細:

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

使用方法:

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

const { createChatSubscriptionSchema } = schemas;

const schema = createChatSubscriptionSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
channelId: 'channel123',
subscribedId: 'user456',
approved: true
});

getChatSubscriptionSchema

単一サブスクリプション取得のためのチャットサブスクリプション取得スキーマ。

目的: 特定チャットサブスクリプション取得リクエストを検証

スキーマ詳細:

  • パラメータ: subscriptionId(パスパラメータ)
  • 目的: 特定チャットサブスクリプション取得リクエストを検証

使用方法:

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

const { getChatSubscriptionSchema } = schemas;

const schema = getChatSubscriptionSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ subscriptionId: 'sub123' });

deleteChatSubscriptionSchema

サブスクリプション削除のためのチャットサブスクリプション削除スキーマ。

目的: 特定チャットサブスクリプション削除リクエストを検証

スキーマ詳細:

  • パラメータ: subscriptionId(パスパラメータ)
  • 目的: 特定チャットサブスクリプション削除リクエストを検証

使用方法:

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

const { deleteChatSubscriptionSchema } = schemas;

const schema = deleteChatSubscriptionSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({ subscriptionId: 'sub123' });

findChatSubscriptionsSchema

フィルタリングとページネーション付きチャットサブスクリプション検索スキーマ。

目的: チャットサブスクリプションの検索とページングリクエストを検証

スキーマ詳細:

  • クエリパラメータ:
    • approved?: boolean - 承認ステータスでのフィルタ
    • channelId?: string - チャンネルでのフィルタ
    • subscribedAt?: string - サブスクリプション日時でのフィルタ(date-timeフォーマット)
    • subscribedId?: string - サブスクライバーでのフィルタ
    • page?: number - ページネーションのページ番号
    • limit?: number - ページネーションの制限
  • 目的: チャットサブスクリプションの検索とページングリクエストを検証

使用方法:

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

const { findChatSubscriptionsSchema } = schemas;

const schema = findChatSubscriptionsSchema({});
const validate = ajv.compile(schema.schemas as SchemaDefinition);
const isValid = validate({
approved: true,
page: 1,
limit: 10
});

🔗 関連ドキュメント