📧 招待フィーチャーブロック
招待フィーチャーブロックは、Nodeblocksアプリケーションにおける招待管理操作のための完全な事前構成済み機能を提供します。これらのフィーチャーは、メール処理による招待の作成、取得、検索、削除のための即座に使用可能なAPIエンドポイントを作成するために、スキーマ、ルート、ハンドラーを組み合わせます。
🎯 概要
招待フィーチャーブロックは以下を目的として設計されています:
- ユーザー招待のための完全な招待ワークフローの提供
- 検証済み招待操作のためのスキーマとルートの組み合わせ
- メール処理とトークン生成の自動実装
- 招待ライフサイクル管理(作成、取得、削除)のサポート
- 招待検索とフィルタリング機能の処理
📋 フィーチャー構造
各招待フィーチャーは一貫したコンポジションパターンに従います:
- スキーマ: 招待入力データとパラメータの検証
- ルート: 招待ハンドラー付きHTTPエンドポイントの提供
- コンポジション:
compose
関数を使用したスキーマとルートの結合
🔧 利用可能な招待フィーチャー
createInvitationFeature
メール処理とトークン生成による新しい招待を作成します。
目的: 完全な検証とメール送信による招待作成を処理
コンポジション:
- スキーマ:
createInvitationSchema
- emailとfromUserIdの必須フィールドを検証 - ルート:
createInvitationRoute
- POST/invitations
招待作成パイプライン付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.createInvitationFeature));
// データベース設定付き
app.use('/api', defService(partial(features.createInvitationFeature, [{ dataStores: db }])));
APIエンドポイント: POST /api/invitations
getInvitationFeature
検証付き個別招待データを取得します。
目的: 適切な検証による招待情報の取得
コンポジション:
- スキーマ:
getInvitationSchema
- パスパラメータを検証 - ルート:
getInvitationByIdRoute
- GET/invitations/:id
取得ハンドラー付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.getInvitationFeature));
// データベース設定付き
app.use('/api', defService(partial(features.getInvitationFeature, [{ dataStores: db }])));
APIエンドポイント: GET /api/invitations/:invitationId
findInvitationsFeature
フィルタリングとページネーション付き招待の検索とリストを行います。
目的: 検索機能付き招待リストの提供
コンポジション:
- スキーマ:
findInvitationsSchema
- フィルタリング用クエリパラメータを検証 - ルート:
findInvitationsRoute
- GET/invitations
検索とページネーション付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.findInvitationsFeature));
// データベース設定付き
app.use('/api', defService(partial(features.findInvitationsFeature, [{ dataStores: db }])));
APIエンドポイント: GET /api/invitations
deleteInvitationFeature
適切な検証とクリーンアップによる招待を削除します。
目的: アクセス制御とクリーンアップによる招待の削除
コンポジション:
- スキーマ:
deleteInvitationSchema
- パスパラメータを検証 - ルート:
deleteInvitationRoute
- DELETE/invitations/:invitationId
削除パイプライン付き
使用方法:
import { features } from '@nodeblocks/backend-sdk';
// 直接使用(ハンドラーにdataStoresが必要)
app.use('/api', defService(features.deleteInvitationFeature));
// データベース設定付き
app.use('/api', defService(partial(features.deleteInvitationFeature, [{ dataStores: db }])));
APIエンドポイント: DELETE /api/invitations/:invitationId