⚙️ ユーザーハンドラーブロック
ユーザーハンドラーブロックは、Nodeblocksアプリケーションにおけるユーザー管理操作のためのコアビジネスロジック機能を提供します。これらのハンドラーは、ユーザーアカウントのライフサイクル管理、データ変換、レスポンスフォーマッティングの共通パターンをカプセル化します。
🎯 概要
ユーザーハンドラーブロックは以下を目的として設計されています:
- 再利用可能な機能でのユーザービジネスロジックのカプセル化
- 適切なエラー管理によるユーザーデータベース操作の処理
- 異なるフォーマット間でのユーザーデータの変換
- TypeScript統合による型安全性の確保
- 他のユーザーブロックとのコンポジションのサポート
📋 ユーザーハンドラー種類
ユーザー非同期ハンドラー
非同期ユーザー操作(データベース呼び出し、APIリクエストなど)を実行する機能。
ユーザー同期ハンドラー
同期ユーザー操作(データ変換、検証など)を実行する機能。
ユーザーターミネーターハンドラー
最終的なユーザーレスポンスをフォーマットして返す機能。
🔧 利用可能なユーザーハンドラー
createUser
データベースに新しいユーザーアカウントを作成します。
目的: エンティティ管理によるユーザーアカウントの作成を処理
使用方法:
import { handlers } from '@nodeblocks/backend-sdk';
const { createUser } = handlers;
// コンポジションで使用
const userPipeline = compose(createUser, createUserTerminator);
getUserById
一意の識別子による単一ユーザーを取得します。
目的: ユーザーIDを使用してデータベースからユーザー詳細を取得
使用方法:
import { handlers } from '@nodeblocks/backend-sdk';
const { getUserById } = handlers;
// コンポジションで使用
const userPipeline = compose(getUserById, normalizeUserTerminator);
findUsers
オプションのフィルタリング付きで複数のユーザーを検索します。
目的: フィルタサポート付きユーザーのクエリを処理
使用方法:
import { handlers } from '@nodeblocks/backend-sdk';
const { findUsers } = handlers;
// コンポジションで使用
const userPipeline = compose(findUsers, normalizeUsersListTerminator);
updateUser
検証とエラー処理によるデータベース内のユーザーデータを更新します。
目的: 適切な検証によるユーザーレコードの更新
使用方法:
import { handlers } from '@nodeblocks/backend-sdk';
const { updateUser } = handlers;
// コンポジションで使用
const userPipeline = compose(updateUser, normalizeUserTerminator);
deleteUser
一意の識別子によるデータベースからユーザーを削除します。
目的: 検証によるユーザーレコードの永続的削除
使用方法:
import { handlers } from '@nodeblocks/backend-sdk';
const { deleteUser } = handlers;
// コンポジションで使用
const userPipeline = compose(deleteUser, deleteUserTerminator);
lockUser
セキュリティ目的でユーザーアカウントをロックします。
目的: アカウントアクセスを無効化してセキュリティを向上
使用方法:
import { handlers } from '@nodeblocks/backend-sdk';
const { lockUser } = handlers;
// コンポジションで使用
const userPipeline = compose(lockUser, lockUserTerminator);
unlockUser
以前にロックされたユーザーアカウントをアンロックします。
目的: ロック後のアカウントアクセスを復元
使用方法:
import { handlers } from '@nodeblocks/backend-sdk';
const { unlockUser } = handlers;
// コンポジションで使用
const userPipeline = compose(unlockUser, unlockUserTerminator);
🎯 ユーザーターミネーターハンドラー
createUserTerminator
適切なステータスコードによるユーザー作成を終了します。
目的: 201ステータスによるユーザー作成成功レスポンスのフォーマット
normalizeUserTerminator
データベース固有のフィールドを削除してユーザーデータを正規化します。
目的: APIレスポンス用ユーザーデータのクリーニング
normalizeUsersListTerminator
各アイテムからデータベース固有のフィールドを削除してユーザーリストを正規化します。
目的: APIレスポンス用ユーザー配列データのクリーニング
deleteUserTerminator
適切なステータスコードによるユーザー削除を終了します。
目的: 204ステータスによる削除成功レスポンスのフォーマット
lockUserTerminator
適切なステータスコードによるユーザーロックを終了します。
目的: 204ステータスによるユーザーロック成功レスポンスをフォーマット
パラメータ:
result
:Result<RouteHandlerPayload, Error>
- ペイロードまたはエラーを含む結果context.data.lockUser
: 前のハンドラーからのロック結果
戻り値: 204 statusCodeを含むレスポンスオブジェクト
ペイロード要件:
context.data.lockUser
が前のハンドラーから利用可能であること
使用例:
import { handlers } from '@nodeblocks/backend-sdk';
const { lockUserTerminator } = handlers;
// コンポジションでの使用
const userPipeline = compose(lockUser, lockUserTerminator);
unlockUserTerminator
適切なステータスコードによるユーザーアンロックを終了します。
目的: 204ステータスによるユーザーアンロック成功レスポンスをフォーマット
パラメータ:
result
:Result<RouteHandlerPayload, Error>
- ペイロードまたはエラーを含む結果context.data.unlockUser
: 前のハンドラーからのアンロック結果
戻り値: 204 statusCodeを含むレスポンスオブジェクト
ペイロード要件:
context.data.unlockUser
が前のハンドラーから利用可能であること
使用例:
import { handlers } from '@nodeblocks/backend-sdk';
const { unlockUserTerminator } = handlers;
// コンポジションでの使用
const userPipeline = compose(schema, unlockUser, unlockUserTerminator);
🔗 関連ドキュメント
- ユーザースキーマブロック - ユーザーデータ検証と契約
- ユーザールートブロック - ユーザーHTTPエンドポイント定義
- ユーザーフィーチャーブロック - ユーザーコンポーズド機能