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

🚀 チャット機能ブロック

チャット機能ブロックは、NodeBlocks アプリケーションにおけるチャット管理操作のための完全な事前構成済み機能を提供します。これらの機能は、スキーマ、ルート、ハンドラーを組み合わせ、適切な検証、認証、エラー処理を使用して即使用可能な API エンドポイントを作成します。


🎯 概要

チャット機能ブロックは次のことを目的として設計されています:

  • チャット管理操作のための完全な API エンドポイントを提供する
  • 検証された操作のためにスキーマをルートと組み合わせる
  • 自動的に認証および認可チェックを含む
  • 関数型合成パターンをサポートする
  • ログ記録とエラー管理をシームレスに処理する

このドキュメントは3つのメインセクションに整理されています:

  • 📺 チャンネル機能: チャットチャンネルを管理(作成、読み取り、更新、削除、検索)
  • 💬 メッセージ機能: チャットメッセージを処理(作成、読み取り、更新、削除、検索)
  • 🔔 サブスクリプションファンクション: チャンネルへのユーザーサブスクリプションを管理(作成、読み取り、削除、検索)

📋 機能構造

各チャット機能は一貫した構成パターンを従います:

  • スキーマ: 入力データとパラメーターを検証します
  • ルート: ハンドラー付きの HTTP エンドポイントを提供します
  • 構成: compose 関数を使用してスキーマとルートを組み合わせます

🔧 利用可能なチャット機能

📺 チャンネル機能

createChannelFeature

検証とルーティングを使用して新しいチャットチャンネルを作成します。

目的: 完全な検証を使用してチャンネル作成を処理します

構成:

使用例:

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

アクセス制御を使用して個別チャンネルデータを取得します。

目的: 適切な認可を使用してチャンネル詳細を取得します

構成:

使用例:

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: 検索機能を使用してチャンネルリストを提供します

構成:

使用例:

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

検証とアクセス制御を使用してチャンネル情報を更新します。

目的: 適切な認可を使用してチャンネルデータを変更します

構成:

使用例:

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

適切な認可を使用してチャンネルを削除します。

目的: アクセス制御を使用してチャンネルを削除します

構成:

使用例:

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

検証とルーティングを使用して新しいチャットメッセージを作成します。

目的: 完全な検証を使用してメッセージ作成を処理します

構成:

使用例:

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

アクセス制御を使用して個別メッセージデータを取得します。

目的: 適切な認可を使用してメッセージ詳細を取得します

構成:

使用例:

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

フィルタリングとページネーションを使用してメッセージを検索およびリストします。

目的: 検索機能を使用してメッセージリストを提供します

構成:

使用例:

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

検証とアクセス制御を使用してメッセージコンテンツを更新します。

目的: 適切な認可を使用してメッセージデータを変更します

構成:

使用例:

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

適切な認可を使用してメッセージを削除します。

目的: アクセス制御を使用してメッセージを削除します

構成:

使用例:

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

検証とルーティングを使用して新しいチャットサブスクリプションを作成します。

目的: 完全な検証を使用してサブスクリプション作成を処理します

構成:

使用例:

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

アクセス制御を使用して個別サブスクリプションデータを取得します。

目的: 適切な認可を使用してサブスクリプション詳細を取得します

構成:

使用例:

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

フィルタリングとページネーションを使用してサブスクリプションを検索およびリストします。

目的: 検索機能を使用してサブスクリプションリストを提供します

構成:

使用例:

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

適切な認可を使用してサブスクリプションを削除します。

目的: アクセス制御を使用してサブスクリプションを削除します

構成:

使用例:

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