⚙️ チャットハンドラー
チャットハンドラーはルートパイプライン関数であり、Express ミドルウェアではありません。これらは params から RouteHandlerPayload の値を読み取り、context.data に成功した値をマージするか、成功した Result をHTTPレスポンス記述子で終了します。
一覧
| ハンドラー | パイプラインの役割 | 入力 / コンテキスト | 結果 / 動作 / エラー | ルートで使用 |
|---|---|---|---|---|
createChatChannel | ハンドラー | requestBody、db.chatChannels | ベースエンティティを作成し、channelId と channel を書き込みます; 空のボディまたは挿入失敗で 400、データベース失敗で 500。 | createChatChannelRoute |
getChatChannelById | ハンドラー | context.data.channelId またはパス channelId、db.chatChannels | channel を書き込みます; ID なしで 400、存在しない場合 404、データベース失敗で 500。 | createChatChannelRoute、getChatChannelRoute、updateChatChannelRoute |
findChatChannels | ハンドラー | requestQuery、db.chatChannels | クエリフィルター(デフォルトは {})から channels を書き込みます; データベース失敗で 500。 | findChatChannelsRoute |
updateChatChannel | ハンドラー | パス/コンテキストチャンネルID、requestBody、オプションの fileStorageDriver | チャンネルを更新し、置き換えられたアイコンをストレージから削除し、channelId を書き込みます; 無効または失敗した作業で 400、404、または 500。 | updateChatChannelRoute |
deleteChatChannel | ハンドラー | パス/コンテキストチャンネルID、db.chatChannels、オプションの fileStorageDriver | チャンネルと既存のアイコンを削除し、deleteChatChannel: true を書き込みます; 失敗で 400、404、または 500。 | deleteChatChannelRoute |
createChatChannelTerminator | ターミネーター | context.data.channel、オプションの fileStorageDriver | 作成されたチャンネルを正規化し、{ data, statusCode: 201 } を返します; 不足したデータまたは正規化失敗はエラーになります。 | createChatChannelRoute |
normalizeChatChannelTerminator | ターミネーター | context.data.channel、オプションの fileStorageDriver | 正規化されたチャンネルを返します; 不足したチャンネルデータは 500 を生成します。 | getChatChannelRoute、updateChatChannelRoute |
normalizeChatChannelsListTerminator | ターミネーター | ラウまたはページネーションされた context.data.channels、オプションの fileStorageDriver | 各チャンネルを正規化しながらページネーションメタデータを保持します; 無効なパイプラインデータは 500 を生成します。 | findChatChannelsRoute |
deleteChatChannelTerminator | ターミネーター | context.data.deleteChatChannel | { statusCode: 204 } を返します; 成功状態の不足は 500 を生成します。 | deleteChatChannelRoute |
getChatMessageById | ハンドラー | context.data.messageId またはパス messageId、db.chatMessages | chatMessage を書き込みます; ID なしで 400、存在しない場合 404、データベース失敗で 500。 | getChatMessageRoute、updateChatMessageRoute |
findChatMessages | ハンドラー | requestQuery、db.chatMessages | createdAt で降順にソートし、chatMessages を書き込みます; データベース失敗で 500。 | カスタム合成のみ |
updateChatMessage | ハンドラー | パス/コンテキストメッセージID、requestBody、db.chatMessages | エンティティを更新し、messageId を書き込みます; 失敗で 400、404、または 500。 | updateChatMessageRoute |
deleteChatMessage | ハンドラー | パス/コンテキストメッセージID、db.chatMessages | エンティティを削除し、deleteChatMessage: true を書き込みます; 失敗で 400、404、または 500。 | deleteChatMessageRoute |
createChatMessageTerminator | ターミネーター | context.data.chatMessage | _id を削除し、{ data, statusCode: 201 } を返します; 不足したデータは 500 を生成します。 | カスタム合成のみ |
normalizeChatMessageTerminator | ターミネーター | context.data.chatMessage | _id を削除し、メッセージを返します; 不足したデータは 500 を生成します。 | カスタム合成のみ |
normalizeChatMessagesListTerminator | ターミネーター | ラウまたはページネーションされた context.data.chatMessages | 各メッセージから _id を削除し、ページネーションメタデータを保持します; 無効なデータは 500 を生成します。 | カスタム合成のみ |
deleteChatMessageTerminator | ターミネーター | context.data.deleteChatMessage | { statusCode: 204 } を返します; 成功状態の不足は 500 を生成します。 | deleteChatMessageRoute |
createChatSubscription | ハンドラー | requestBody、db.subscriptions | ベースエンティティを作成し、subscriptionId と subscription を書き込みます; 失敗で 400 または 500。 | createChatSubscriptionRoute |
getChatSubscriptionById | ハンドラー | context.data.subscriptionId またはパス subscriptionId、db.subscriptions | subscription を書き込みます; ID なしで 400、存在しない場合 404、データベース失敗で 500。 | createChatSubscriptionRoute、getChatSubscriptionRoute |
findChatSubscriptions | ハンドラー | requestQuery、db.subscriptions | クエリフィルター(デフォルトは {})から subscriptions を書き込みます; データベース失敗で 500。 | findChatSubscriptionsRoute |
deleteChatSubscription | ハンドラー | パス/コンテキストサブスクリプションID、db.subscriptions | エンティティを削除し、deleteChatSubscription: true を書き込みます; 失敗で 400、404、または 500。 | deleteChatSubscriptionRoute |
createChatSubscriptionTerminator | ターミネーター | context.data.subscription | _id を削除し、{ data, statusCode: 201 } を返します; 不足したデータは 500 を生成します。 | createChatSubscriptionRoute |
normalizeChatSubscriptionTerminator | ターミネーター | context.data.subscription | _id を削除し、サブスクリプションを返します; 不足したデータは 500 を生成します。 | getChatSubscriptionRoute |
normalizeChatSubscriptionsListTerminator | ターミネーター | ラウまたはページネーションされた context.data.subscriptions | 各項目から _id を削除し、ページネーションメタデータを保持します; 無効なパイプラインデータは 500 を生成します。 | findChatSubscriptionsRoute |
deleteChatSubscriptionTerminator | ターミネーター | context.data.deleteChatSubscription | { statusCode: 204 } を返します; 成功状態の不足は 500 を生成します。 | deleteChatSubscriptionRoute |
詳細
createChatChannel
実装
params.requestBody を読み取り、不足または空のボディを 400 で拒否し、context.db.chatChannels にベースエンティティを作成し、channelId と作成された channel の両方をパイプラインデータにマージします。不足した insertedId は 400 です; 投げられたデータベースエラーは 500 になります。createChatChannelRoute によって使用されます。
getChatChannelById
実装
まず context.data.channelId からチャンネルIDを読み取り、次に params.requestParams.channelId から読み取り、context.db.chatChannels からフェッチし、ドキュメントを channel としてマージします。不足したIDは 400 を返し、不足したチャンネルは 404 を返し、データベース失敗は 500 を返します。createChatChannelRoute、getChatChannelRoute、および updateChatChannelRoute によって使用されます。
findChatChannels
実装
params.requestQuery || {} を MongoDB フィルターとして直接使用し、結果の配列を channels としてマージします; クエリ失敗は 500 を返します。findChatChannelsRoute は正規化の前にページネーションでラップします。
updateChatChannel
実装
以前のデータまたはパスからチャンネルIDを読み取り、空でないボディを必要とします。以前のチャンネルを読み取り、updateBaseEntity を適用し、存在する場合は置き換えられたアイコンを fileStorageDriver 経由で削除し、次の検索のために channelId をマージします。不足した入力には 400、チャンネルが存在しない場合は 404、データベースまたはファイル削除失敗には 500 を返します。updateChatChannelRoute によって使用されます。
deleteChatChannel
実装
以前のデータまたはパスからチャンネルIDを読み取り、チャンネルを読み取って削除し、適用される場合は fileStorageDriver を通じてアイコンを削除し、deleteChatChannel: true を書き込みます。不足したIDは 400 を返し、不足したチャンネルは 404 を返し、データベースまたはストレージ失敗は 500 を返します。deleteChatChannelRoute によって使用されます。
createChatChannelTerminator
実装
context.data.channel が必要で、fileStorageDriver でオプションのアイコンを正規化し、{ data: normalizedChannel, statusCode: 201 } を返します。以前のエラーをスローし、パイプラインデータが不足しているか正規化が失敗した場合は 500 を報告します。createChatChannelRoute の最終ステップ。
normalizeChatChannelTerminator
実装
context.data.channel が必要で、fileStorageDriver でオプションのアイコンを正規化し、通常のレスポンスボディとして正規化されたエンティティを返します。以前のエラーをスローし、不足したパイプラインデータには 500 を送出します。getChatChannelRoute および updateChatChannelRoute によって使用されます。
normalizeChatChannelsListTerminator
実装
生のチャンネル配列またはページネーションされた { data, ...metadata } 形状の両方を受け取り、各アイコンを正規化し、正規化されたデータと同じ外側の形状を返します。無効なパイプラインデータは 500 を生成します; 正規化エラーは伝播されます。findChatChannelsRoute によって使用されます。
deleteChatChannelTerminator
実装
context.data.deleteChatChannel が必要で、{ statusCode: 204 } を返し、空の成功レスポンスを生成します。成功状態の不足は 500 を生成します。deleteChatChannelRoute の最終ステップ。
getChatMessageById
実装
まず context.data.messageId からメッセージIDを読み取り、次にパスから読み取り、context.db.chatMessages からフェッチし、ドキュメントを chatMessage としてマージします。不足したIDは 400 を返し、不足したメッセージは 404 を返し、データベース失敗は 500 を返します。getChatMessageRoute および updateChatMessageRoute によって使用されます。
findChatMessages
実装
params.requestQuery を MongoDB フィルターとして使用し、結果を createdAt で降順にソートして chatMessages としてマージします; データベース失敗は 500 を返します。エクスポートされたチャットルートはこのハンドラーを使用していません; 現在の一覧と既読状態ルートは同名のブロックエクスポートを呼び出します。
updateChatMessage
実装
以前のデータまたはパスからメッセージIDを読み取り、空でないリクエストボディを必要とし、updateBaseEntity で更新し、messageId をマージします。不足した入力には 400、メッセージが一致しない場合は 404、データベース失敗には 500 を返します。updateChatMessageRoute によって使用されます。
deleteChatMessage
実装
以前のデータまたはパスからメッセージIDを読み取り、context.db.chatMessages から削除し、deleteChatMessage: true を書き込みます。ID なしで 400 を返し、何も削除されない場合は 404 を返し、データベース失敗で 500 を返します。deleteChatMessageRoute によって使用されます。
createChatMessageTerminator
実装
context.data.chatMessage が必要で、MongoDB _id を削除し、{ data: chatMessage, statusCode: 201 } を返します; 不足したデータは 500 を生成します。このレガシーターミネーターは公開されていますが、エクスポートされたチャットルートでは使用されていません。
normalizeChatMessageTerminator
実装
context.data.chatMessage が必要で、MongoDB _id を削除し、残されたエンティティを返します; 不足したデータは 500 を生成します。この公開レガシーターミネーターはカスタム合成のみ利用可能です。
normalizeChatMessagesListTerminator
実装
ラウまたはページネーションされた context.data.chatMessages コレクションを受け取り、各メッセージから _id を削除し、ページネーションメタデータを保持します。無効なパイプラインデータは 500 を生成します。現在エクスポートされたチャットルートでは使用されていません。
deleteChatMessageTerminator
実装
context.data.deleteChatMessage が必要で、{ statusCode: 204 } を返します; 成功状態の不足は 500 を生成します。deleteChatMessageRoute の最終ステップ。
createChatSubscription
実装
空でないボディが必要で、context.db.subscriptions にベースエンティティを作成し、subscriptionId と subscription をマージします。不足したボディまたは挿入失敗は 400 を返します; データベース失敗は 500 を返します。createChatSubscriptionRoute によって使用されます。
getChatSubscriptionById
実装
以前のデータまたはパスからサブスクリプションIDを読み取り、context.db.subscriptions からフェッチし、subscription をマージします。不足したIDは 400 を返し、不足したサブスクリプションは 404 を返し、データベース失敗は 500 を返します。createChatSubscriptionRoute および getChatSubscriptionRoute によって使用されます。
findChatSubscriptions
実装
params.requestQuery || {} を MongoDB フィルターとして使用し、結果の配列を subscriptions としてマージします; データベース失敗は 500 を返します。findChatSubscriptionsRoute はページネーションでラップします。
deleteChatSubscription
実装
以前のデータまたはパスからサブスクリプションIDを読み取り、削除し、deleteChatSubscription: true を書き込みます。不足したIDは 400 を返し、不足したサブスクリプションは 404 を返し、データベース失敗は 500 を返します。deleteChatSubscriptionRoute によって使用されます。
createChatSubscriptionTerminator
実装
context.data.subscription が必要で、MongoDB _id を削除し、{ data: subscription, statusCode: 201 } を返します; 不足したデータは 500 を生成します。createChatSubscriptionRoute の最終ステップ。
normalizeChatSubscriptionTerminator
実装
context.data.subscription が必要で、MongoDB _id を削除し、エンティティを返します; 不足したデータは 500 を生成します。getChatSubscriptionRoute の最終ステップ。
normalizeChatSubscriptionsListTerminator
実装
ラウまたはページネーションされたサブスクリプションコレクションを受け取り、各項目から _id を削除し、ページネーションメタデータを保持します。無効なパイプラインデータは 500 を生成します。findChatSubscriptionsRoute の最終ステップ。
deleteChatSubscriptionTerminator
実装
context.data.deleteChatSubscription が必要で、{ statusCode: 204 } を返します; 成功状態の不足は 500 を生成します。deleteChatSubscriptionRoute の最終ステップ。