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