メインコンテンツまでスキップ
バージョン: 0.5.0 (最新)

💬 チャットハンドラーブロック

チャットハンドラーブロックは、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 ステータスコードを返します
  • 削除操作の結果を検証します
  • 削除に失敗した場合はエラーをスローします