🚀 チャット機能ブロック
チャット機能ブロックは、NodeBlocks アプリケーションにおけるチャット管理操作のための完全な事前構成済み機能を提供します。これらの機能は、スキーマ、ルート、ハンドラーを組み合わせ、適切な検証、認証、エラー処理を使用して即使用可能な API エンドポイントを作成します。
🎯 概要
チャット機能ブロックは次のことを目的として設計されています:
- チャット管理操作のための完全な API エンドポイントを提供する
- 検証された操作のためにスキーマをルートと組み合わせる
- 自動的に認証および認可チェックを含む
- 関数型合成パターンをサポートする
- ログ記録とエラー管理をシームレスに処理する
このドキュメントは3つのメインセクションに整理されています:
- 📺 チャンネル機能: チャットチャンネルを管理(作成、読み取り、更新、削除、検索)
- 💬 メッセージ機能: チャットメッセージを処理(作成、読み取り、更新、削除、検索)
- 🔔 サブスクリプションファンクション: チャンネルへのユーザーサブスクリプションを管理(作成、読み取り、削除、検索)
📋 機能構造
各チャット機能は一貫した構成パターンを従います:
- スキーマ: 入力データとパラメーターを検証します
- ルート: ハンドラー付きの HTTP エンドポイントを提供します
- 構成:
compose
関数を使用してスキーマとルートを組み合わせます
🔧 利用可能なチャット機能
📺 チャンネル機能
createChannelFeature
検証とルーティングを使用して新しいチャットチャンネルを作成します。
目的: 完全な検証を使用してチャンネル作成を処理します
構成:
- スキーマ:
createChatChannelSchema
- 名前と ownerId を検証 - ルート:
createChatChannelRoute
- 作成ハンドラー付きの POST/channels
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーで dataStores が必要)
app.use('/api', defService(features.createChannelFeature));
// データベース構成を使用
app.use('/api', defService(partial(features.createChannelFeature, [{ dataStores: db }])));
API エンドポイント: POST /api/channels
getChannelFeature
アクセス制御を使用して個別チャンネルデータを取得します。
目的: 適切な認可を使用してチャンネル詳細を取得します
構成:
- スキーマ:
getChatChannelSchema
- パスパラメーターを検証 - ルート:
getChatChannelRoute
- 取得ハンドラー付きの GET/channels/:channelId
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーで dataStores が必要)
app.use('/api', defService(features.getChannelFeature));
// データベース構成を使用
app.use('/api', defService(partial(features.getChannelFeature, [{ dataStores: db }])));
API エンドポイント: GET /api/channels/:channelId
findChannelsFeature
フィルタリングとページネーションを使用してチャンネルを検索およびリストします。
Purpose: 検索機能を使用してチャンネルリストを提供します
構成:
- スキーマ:
findChatChannelsSchema
- フィルタリング用のクエリパラメーターを検証 - ルート:
findChatChannelsRoute
- 検索とページネーション付きの GET/channels
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーで dataStores が必要)
app.use('/api', defService(features.findChannelsFeature));
// データベース構成を使用
app.use('/api', defService(partial(features.findChannelsFeature, [{ dataStores: db }])));
API エンドポイント: GET /api/channels
updateChannelFeature
検証とアクセス制御を使用してチャンネル情報を更新します。
目的: 適切な認可を使用してチャンネルデータを変更します
構成:
- スキーマ:
updateChatChannelSchema
- オプションの名前と ownerId を検証 - ルート:
updateChatChannelRoute
- 更新ハンドラー付きの PATCH/channels/:channelId
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーで dataStores が必要)
app.use('/api', defService(features.updateChannelFeature));
// データベース構成を使用
app.use('/api', defService(partial(features.updateChannelFeature, [{ dataStores: db }])));
API エンドポイント: PATCH /api/channels/:channelId
deleteChannelFeature
適切な認可を使用してチャンネルを削除します。
目的: アクセス制御を使用してチャンネルを削除します
構成:
- スキーマ:
deleteChatChannelSchema
- パスパラメーターを検証 - ルート:
deleteChatChannelRoute
- 削除ハンドラー付きの DELETE/channels/:channelId
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーで dataStores が必要)
app.use('/api', defService(features.deleteChannelFeature));
// データベース構成を使用
app.use('/api', defService(partial(features.deleteChannelFeature, [{ dataStores: db }])));
API エンドポイント: DELETE /api/channels/:channelId
💬 メッセージ機能
createChatMessageFeature
検証とルーティングを使用して新しいチャットメッセージを作成します。
目的: 完全な検証を使用してメッセージ作成を処理します
構成:
- スキーマ:
createChatMessageSchema
- コンテンツ、senderId、channelId を検証 - ルート:
createChatMessageRoute
- 作成ハンドラー付きの POST/messages
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーで dataStores が必要)
app.use('/api', defService(features.createChatMessageFeature));
// データベース構成を使用
app.use('/api', defService(partial(features.createChatMessageFeature, [{ dataStores: db }])));
API エンドポイント: POST /api/messages
getChatMessageFeature
アクセス制御を使用して個別メッセージデータを取得します。
目的: 適切な認可を使用してメッセージ詳細を取得します
構成:
- スキーマ:
getChatMessageSchema
- パスパラメーターを検証 - ルート:
getChatMessageRoute
- 取得ハンドラー付きの GET/messages/:messageId
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーで dataStores が必要)
app.use('/api', defService(features.getChatMessageFeature));
// データベース構成を使用
app.use('/api', defService(partial(features.getChatMessageFeature, [{ dataStores: db }])));
API エンドポイント: GET /api/messages/:messageId
findChatMessagesFeature
フィルタリングとページネーションを使用してメッセージを検索およびリストします。
目的: 検索機能を使用してメッセージリストを提供します
構成:
- スキーマ:
findChatMessagesSchema
- フィルタリング用のクエリパラメーターを検証 - ルート:
findChatMessagesRoute
- 検索とページネーション付きの GET/messages
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーで dataStores が必要)
app.use('/api', defService(features.findChatMessagesFeature));
// データベース構成を使用
app.use('/api', defService(partial(features.findChatMessagesFeature, [{ dataStores: db }])));
API エンドポイント: GET /api/messages
updateChatMessageFeature
検証とアクセス制御を使用してメッセージコンテンツを更新します。
目的: 適切な認可を使用してメッセージデータを変更します
構成:
- スキーマ:
updateChatMessageSchema
- オプションのコンテンツとメタデータを検証 - ルート:
updateChatMessageRoute
- 更新ハンドラー付きの PATCH/messages/:messageId
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーで dataStores が必要)
app.use('/api', defService(features.updateChatMessageFeature));
// データベース構成を使用
app.use('/api', defService(partial(features.updateChatMessageFeature, [{ dataStores: db }])));
API エンドポイント: PATCH /api/messages/:messageId
deleteChatMessageFeature
適切な認可を使用してメッセージを削除します。
目的: アクセス制御を使用してメッセージを削除します
構成:
- スキーマ:
deleteChatMessageSchema
- パスパラメーターを検証 - ルート:
deleteChatMessageRoute
- 削除ハンドラー付きの DELETE/messages/:messageId
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーで dataStores が必要)
app.use('/api', defService(features.deleteChatMessageFeature));
// データベース構成を使用
app.use('/api', defService(partial(features.deleteChatMessageFeature, [{ dataStores: db }])));
API エンドポイント: DELETE /api/messages/:messageId
🔔 サブスクリプションファンクション
createChatSubscriptionFeature
検証とルーティングを使用して新しいチャットサブスクリプションを作成します。
目的: 完全な検証を使用してサブスクリプション作成を処理します
構成:
- スキーマ:
createChatSubscriptionSchema
- channelId とオプションのフィールドを検証 - ルート:
createChatSubscriptionRoute
- 作成ハンドラー付きの POST/subscriptions
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーで dataStores が必要)
app.use('/api', defService(features.createChatSubscriptionFeature));
// データベース構成を使用
app.use('/api', defService(partial(features.createChatSubscriptionFeature, [{ dataStores: db }])));
API エンドポイント: POST /api/subscriptions
getChatSubscriptionFeature
アクセス制御を使用して個別サブスクリプションデータを取得します。
目的: 適切な認可を使用してサブスクリプション詳細を取得します
構成:
- スキーマ:
getChatSubscriptionSchema
- パスパラメーターを検証 - ルート:
getChatSubscriptionRoute
- 取得ハンドラー付きの GET/subscriptions/:subscriptionId
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーで dataStores が必要)
app.use('/api', defService(features.getChatSubscriptionFeature));
// データベース構成を使用
app.use('/api', defService(partial(features.getChatSubscriptionFeature, [{ dataStores: db }])));
API エンドポイント: GET /api/subscriptions/:subscriptionId
findChatSubscriptionsFeature
フィルタリングとページネーションを使用してサブスクリプションを検索およびリストします。
目的: 検索機能を使用してサブスクリプションリストを提供します
構成:
- スキーマ:
findChatSubscriptionsSchema
- フィルタリング用のクエリパラメーターを検証 - ルート:
findChatSubscriptionsRoute
- 検索とページネーション付きの GET/subscriptions
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーで dataStores が必要)
app.use('/api', defService(features.findChatSubscriptionsFeature));
// データベース構成を使用
app.use('/api', defService(partial(features.findChatSubscriptionsFeature, [{ dataStores: db }])));
API エンドポイント: GET /api/subscriptions
deleteChatSubscriptionFeature
適切な認可を使用してサブスクリプションを削除します。
目的: アクセス制御を使用してサブスクリプションを削除します
構成:
- スキーマ:
deleteChatSubscriptionSchema
- パスパラメーターを検証 - ルート:
deleteChatSubscriptionRoute
- 削除ハンドラー付きの DELETE/subscriptions/:subscriptionId
使用例:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーで dataStores が必要)
app.use('/api', defService(features.deleteChatSubscriptionFeature));
// データベース構成を使用
app.use('/api', defService(partial(features.deleteChatSubscriptionFeature, [{ dataStores: db }])));
API エンドポイント: DELETE /api/subscriptions/:subscriptionId