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

📧 Invitation 機能ブロック

Invitation feature ブロックは、NodeBlocks アプリケーションにおける招待管理操作のための完全な事前合成機能を備えています。これらの機能は、スキーマ、ルート、ハンドラーを組み合わせて、メール処理を伴う招待作成、取得、検索、削除のための即時使用可能な API エンドポイントを作成します。


🎯 概要

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

  • ユーザー招待のための完全な招待ワークフローを提供する
  • 検証された招待操作のためのスキーマとルートを組み合わせる
  • メール処理とトークン生成を自動的に含む
  • 招待ライフサイクル管理をサポートする(作成、取得、削除)
  • 招待検索とフィルタリング機能を処理する

📋 機能構造

各招待機能は、一貫した構成パターンを従います:

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

🔧 利用可能な Invitation 機能

createInvitationFeature

メール処理とトークン生成を使用して新しい招待を作成します。

目的: 完全な検証とメール送信を使用して招待作成を処理する

構成:

使用例:

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

検証を使用して個々の招待データを取得します。

目的: 適切な検証を使用して招待情報を取得する

構成:

使用例:

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

適切な検証とクリーンアップを使用して招待を削除します。

目的: アクセスコントロールとクリーンアップを使用して招待を削除する

構成:

使用例:

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