⚙️ チャットハンドラー
チャットハンドラーは、Nodeblocksアプリケーションでチャット管理操作のコアビジネスロジック関数を提供します。これらのハンドラーは、チャットデータベース操作、データ変換、レスポンスフォーマットの共通パターンをカプセル化します。
🎯 概要
チャットハンドラーは以下の目的で設計されています:
- 再利用可能な関数でチャットビジネスロジックをカプセル化 - 再利用性
- 適切なエラー管理を含むチャットデータベース操作の処理 - エラーハンドリング
- 異なる形式間でのチャットデータの変換 - データ変換
- TypeScript統合による型安全性の確保 - 型安全性
- 他のチャットブロックとの合成のサポート - 構成可能性
📋 チャットハンドラータイプ
チャネルハンドラー
チャネル関連操作(作成、取得、更新、削除)を実行する関数。
メッセージハンドラー
メッセージ関連操作(送信、取得、更新、削除)を実行する関数。
サブスクリプションハンドラー
サブスクリプション関連操作(チャネルへのユーザーサブスクリプションの管理)を実行する関数。
ターミネーターハンドラー
最終的なチャットレスポンスをフォーマットして返す関数。
🔧 利用可能なチャットハンドラー
📺 チャネルハンドラー
コアチャネル操作
createChatChannel
バリデーションとエンティティ管理を含むデータベースに新しいチャットチャネルを作成します。
目的: バリデーションとエンティティ管理を含むチャットチャネルの作成を処理
パラメータ:
payload: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error> - channelId付きの成功またはエラー
使用例:
// Used in composition:
compose(createChatChannel, terminator);
主な機能:
- リクエストボディの存在をバリデーション
- メタデータ付きでベースエンティティを作成
- 成功時にチャネルIDを返す
- データベース挿入エラーを処理
getChatChannelById
存在バリデーション付きでIDによる単一チャネルを取得します。
目的: 存在バリデーション付きでチャネルデータを取得
パラメータ:
payload: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error> - チャネル付きの成功またはエラー
使用例:
// Used in composition:
compose(getChatChannelById, normalizeTerminator);
主な機能:
- チャネルIDの存在をバリデーション
- チャネルの存在をチェック
- 完全なチャネルオブジェクトを返す
- データベースクエリエラーを処理
findChatChannels
オプションフィルタリング付きで複数のチャネルを見つけます。
目的: フィルターサポート付きでチャネルのクエリを処理
パラメータ:
payload: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error> - チャネル配列付きの成功またはエラー
使用例:
// Used in composition:
compose(findChatChannels, listTerminator);
主な機能:
- オプションのフィルターパラメータを受け入れる
- フィルターが提供されない場合はすべてのチャネルを返す
- 複雑なMongoDBクエリをサポート
- データベースクエリエラーを処理
updateChatChannel
バリデーションと競合検出付きでIDによる既存チャネルを更新します。
目的: バリデーションと競合検出を含むチャネルの更新を処理
パラメータ:
payload: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error> - 更新結果付きの成功またはエラー
使用例:
// Used in composition:
compose(updateChatChannel, terminator);
主な機能:
- チャネルIDとリクエストボディをバリデーション
- 更新前にチャネルの存在をチェック
- ベースエンティティメタデータを更新
- 更新操作結果を返す
deleteChatChannel
安全な削除と存在バリデーション付きでIDによるチャネルを削除します。
目的: 存在バリデーション付きでチャネルの安全な削除を処理
パラメータ:
payload: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error> - 削除結果付きの成功またはエラー
使用例:
// Used in composition:
compose(deleteChatChannel, deleteTerminator);
主な機能:
- チャネルIDの存在をバリデーション
- 削除前にチャネルの存在をチェック
- 削除操作結果を返す
- データベース削除エラーを処理
チャネルターミネーター関数
createChatChannelTerminator
適切なレスポンスフォーマットでチャネル作成を終了します。
目的: 201ステータスで成功したチャネル作成レスポンスをフォーマット
パラメータ:
result: RouteHandlerPayloadまたはErrorを含むResult
戻り値: データとstatusCodeを含むフォーマットされたレスポンスオブジェクト
使用例:
// Used in composition:
compose(createChatChannel, createChatChannelTerminator);
主な機能:
- 成功した作成に対して201ステータスコードを返す
- データベース固有のフィールドを削除
- フォーマットされたチャネルデータを返す
normalizeChatChannelTerminator
データベース固有のフィールドを削除してチャネルデータを正規化します。
目的: APIレスポンス用にチャネルデータをクリーンアップ
パラメータ:
result: RouteHandlerPayloadまたはErrorを含むResult
戻り値: 正規化されたチャネルオブジェクト
使用例:
// Used in composition:
compose(getChatChannelById, normalizeChatChannelTerminator);
主な機能:
- チャネルから
_idフィールドを削除 - チャネルが見つからない場合はエラーをスロー
- クリーンなチャネルオブジェクトを返す
normalizeChatChannelsListTerminator
各アイテムからデータベース固有のフィールドを削除してチャネルリストを正規化します。
目的: バリデーション付きでAPIレスポンス用にチャネル配列データをクリーンアップ
パラメータ:
result: RouteHandlerPayloadまたはErrorを含むResult
戻り値: 正規化されたチャネルオブジェクトの配列
使用例:
// Used in composition:
compose(findChatChannels, normalizeChatChannelsListTerminator);
主な機能:
- すべてのチャネルから
_idフィールドを削除 - チャネル配列の存在をバリデーション
- チャネル配列をマップ
- クリーンなチャネル配列を返す
deleteChatChannelTerminator
適切なステータスコードでチャネル削除を終了します。
目的: 204ステータスで成功した削除レスポンスをフォーマット
パラメータ:
result: RouteHandlerPayloadまたはErrorを含むResult
戻り値: 204 statusCodeを含むレスポンスオブジェクト
使用例:
// Used in composition:
compose(deleteChatChannel, deleteChatChannelTerminator);
主な機能:
- 成功した削除に対して204ステータスコードを返す
- 削除操作結果をバリデーション
- 削除が失敗した場合はエラーをスロー
💬 メッセージハンドラー
コアメッセージ操作
createChatMessage
データベースに新しいチャットメッセージを作成します。
目的: バリデーションとエンティティ管理を含むチャットメッセージの作成を処理
パラメータ:
payload: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error> - messageId付きの成功またはエラー
使用例:
// Used in route composition:
const createMessageRoute = withRoute({
handler: compose(createChatMessage, nextHandler)
});
主な機能:
- リクエストボディの存在をバリデーション
- メタデータ付きでベースエンティティを作成
- 成功時にメッセージIDを返す
- データベース挿入エラーを処理
getChatMessageById
データベースからIDによるチャットメッセージを取得します。
目的: 存在バリデーション付きでメッセージデータを取得
パラメータ:
payload: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error> - chatMessage付きの成功またはエラー
使用例:
// Used in route composition:
const getMessageRoute = withRoute({
handler: compose(getChatMessageById, nextHandler)
});
主な機能:
- メッセージIDの存在をバリデーション
- メッセージの存在をチェック
- 完全なメッセージオブジェクトを返す
- データベースクエリエラーを処理
findChatMessages
オプションのフィルター基準を使用してデータベース内のチャットメッセージを見つけます。
目的: フィルターサポートとソートを含むメッセージのクエリを処理
パラメータ:
payload: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error> - chatMessages配列付きの成功またはエラー
使用例:
// Used in route composition:
const findMessagesRoute = withRoute({
handler: compose(findChatMessages, nextHandler)
});
主な機能:
- オプションのフィルターパラメータを受け入れる
- 作成日でメッセージをソート(新しい順)
- フィルターが提供されない場合はすべてのメッセージを返す
- 複雑なMongoDBクエリをサポート
updateChatMessage
データベース内の既存のチャットメッセージを更新します。
目的: バリデーションと競合検出を含むメッセージの更新を処理
パラメータ:
payload: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error> - 更新結果付きの成功またはエラー
使用例:
// Used in route composition:
const updateMessageRoute = withRoute({
handler: compose(updateChatMessage, nextHandler)
});
主な機能:
- メッセージIDとリクエストボディをバリデーション
- 更新前にメッセージの存在をチェック
- ベースエンティティメタデータを更新
- 更新操作結果を返す
deleteChatMessage
データベースからIDによるチャットメッセージを削除します。
目的: 存在バリデーション付きでメッセージの安全な削除を処理
パラメータ:
payload: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error> - 削除結果付きの成功またはエラー
使用例:
// Used in route composition:
const deleteMessageRoute = withRoute({
handler: compose(deleteChatMessage, nextHandler)
});
主な機能:
- メッセージIDの存在をバリデーション
- 削除前にメッセージの存在をチェック
- 削除操作結果を返す
- データベース削除エラーを処理
メッセージターミネーター関数
createChatMessageTerminator
APIレスポンス用にチャットメッセージ作成レスポンスをフォーマットします。
目的: 201ステータスで成功したメッセージ作成レスポンスをフォーマット
パラメータ:
result: RouteHandlerPayloadまたはErrorを含むResult
戻り値: フォーマットされたチャットメッセージデータと201ステータスコードを含むオブジェクト
使用例:
// Used in route composition:
const createMessageRoute = withRoute({
handler: compose(createChatMessage, lift(createChatMessageTerminator))
});
主な機能:
- 成功した作成に対して201ステータスコードを返す
- データベース固有のフィールドを削除
- フォーマットされたメッセージデータを返す
normalizeChatMessageTerminator
APIレスポンス用に単一のチャットメッセージデータを正規化します。
目的: APIレスポンス用にメッセージデータをクリーンアップ
パラメータ:
result: RouteHandlerPayloadまたはErrorを含むResult
戻り値: _idフィールドなしの正規化されたチャットメッセージオブジェクト
使用例:
// Used in route composition:
const getMessageRoute = withRoute({
handler: compose(getChatMessageById, lift(normalizeChatMessageTerminator))
});
主な機能:
- メッセージから
_idフィールドを削除 - メッセージが見つからない場合はエラーをスロー
- クリーンなメッセージオブジェクトを返す
normalizeChatMessagesListTerminator
APIレスポンス用にチャットメッセージリストデータを正規化します。
目的: APIレスポンス用にメッセージ配列データをクリーンアップ
パラメータ:
result: RouteHandlerPayloadまたはErrorを含むResult
戻り値: _idフィールドなしの正規化されたチャットメッセージオブジェクトの配列
使用例:
// Used in route composition:
const findMessagesRoute = withRoute({
handler: compose(findChatMessages, lift(normalizeChatMessagesListTerminator))
});
主な機能:
- すべてのメッセージから
_idフィールドを削除 - メッセージ配列の存在をバリデーション
- メッセージ配列をマップ
- クリーンなメッセージ配列を返す
deleteChatMessageTerminator
APIレスポンス用にチャットメッセージ削除レスポンスをフォーマットします。
目的: 204ステータスで成功した削除レスポンスをフォーマット
パラメータ:
result: RouteHandlerPayloadまたはErrorを含むResult
戻り値: 成功した削除を示す204ステータスコードを含むオブジェクト
使用例:
// Used in route composition:
const deleteMessageRoute = withRoute({
handler: compose(deleteChatMessage, lift(deleteChatMessageTerminator))
});
主な機能:
- 成功した削除に対して204ステータスコードを返す
- 削除操作結果をバリデーション
- 削除が失敗した場合はエラーをスロー
🔔 サブスクリプションハンドラー
コアサブスクリプション操作
createChatSubscription
データベースに新しいサブスクリプションを作成します。
目的: バリデーションとエンティティ管理を含むチャットサブスクリプションの作成を処理
パラメータ:
payload: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error> - subscriptionId付きの成功またはエラー
使用例:
// Used in composition:
compose(createChatSubscription, terminator);
主な機能:
- リクエストボディの存在をバリデーション
- メタデータ付きでベースエンティティを作成
- 成功時にサブスクリプションIDを返す
- データベース挿入エラーを処理
getChatSubscriptionById
IDによる単一のサブスクリプションを取得します。
目的: 存在バリデーション付きでサブスクリプションデータを取得
パラメータ:
payload: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error> - サブスクリプション付きの成功またはエラー
使用例:
// Used in composition:
compose(getChatSubscriptionById, normalizeTerminator);
主な機能:
- サブスクリプションIDの存在をバリデーション
- サブスクリプションの存在をチェック
- 完全なサブスクリプションオブジェクトを返す
- データベースクエリエラーを処理
findChatSubscriptions
オプションフィルタリング付きで複数のサブスクリプションを見つけます。
目的: フィルターサポート付きでサブスクリプションのクエリを処理
パラメータ:
payload: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error> - サブスクリプション配列付きの成功またはエラー
使用例:
// Used in composition:
compose(findChatSubscriptions, listTerminator);
主な機能:
- オプションのフィルターパラメータを受け入れる
- フィルターが提供されない場合はすべてのサブスクリプションを返す
- 複雑なMongoDBクエリをサポート
- データベースクエリエラーを処理
deleteChatSubscription
IDによるサブスクリプションを削除します。
目的: 存在バリデーション付きでサブスクリプションの安全な削除を処理
パラメータ:
payload: リクエストコンテキストとデータを含むRouteHandlerPayload
戻り値: Result<RouteHandlerPayload, Error> - 削除結果付きの成功またはエラー
使用例:
// Used in composition:
compose(deleteChatSubscription, deleteTerminator);
主な機能:
- サブスクリプションIDの存在をバリデーション
- 削除前にサブスクリプションの存在をチェック
- 削除操作結果を返す
- データベース削除エラーを処理
サブスクリプションターミネーター関数
createChatSubscriptionTerminator
適切なレスポンスフォーマットでサブスクリプション作成を終了します。
目的: 201ステータスで成功したサブスクリプション作成レスポンスをフォーマット
パラメータ:
result: RouteHandlerPayloadまたはErrorを含むResult
戻り値: データとstatusCodeを含むフォーマットされたレスポンスオブジェクト
使用例:
// Used in composition:
compose(createChatSubscription, createChatSubscriptionTerminator);
主な機能:
- 成功した作成に対して201ステータスコードを返す
- データベース固有のフィールドを削除
- フォーマットされたサブスクリプションデータを返す
normalizeChatSubscriptionTerminator
データベース固有のフィールドを削除してサブスクリプションデータを正規化します。
目的: APIレスポンス用にサブスクリプションデータをクリーンアップ
パラメータ:
result: RouteHandlerPayloadまたはErrorを含むResult
戻り値: 正規化されたサブスクリプションオブジェクト
使用例:
// Used in composition:
compose(getChatSubscriptionById, normalizeChatSubscriptionTerminator);
主な機能:
- サブスクリプションから
_idフィールドを削除 - サブスクリプションが見つからない場合はエラーをスロー
- クリーンなサブスクリプションオブジェクトを返す
normalizeChatSubscriptionsListTerminator
各アイテムからデータベース固有のフィールドを削除してサブスクリプションリストを正規化します。
目的: バリデーション付きでAPIレスポンス用にサブスクリプション配列データをクリーンアップ
パラメータ:
result: RouteHandlerPayloadまたはErrorを含むResult
戻り値: 正規化されたサブスクリプションオブジェクトの配列
使用例:
// Used in composition:
compose(findChatSubscriptions, normalizeChatSubscriptionsListTerminator);
主な機能:
- すべてのサブスクリプションから
_idフィールドを削除 - サブスクリプション配列の存在をバリデーション
- サブスクリプション配列をマップ
- クリーンなサブスクリプション配列を返す
deleteChatSubscriptionTerminator
適切なステータスコードでサブスクリプション削除を終了します。
目的: 204ステータスで成功した削除レスポンスをフォーマット
パラメータ:
result: RouteHandlerPayloadまたはErrorを含むResult
戻り値: 204 statusCodeを含むレスポンスオブジェクト
使用例:
// Used in composition:
compose(deleteChatSubscription, deleteChatSubscriptionTerminator);
主な機能:
- 成功した削除に対して204ステータスコードを返す
- 削除操作結果をバリデーション
- 削除が失敗した場合はエラーをスロー