⚙️ User ハンドラーブロック
User ハンドラーブロックは、Nodeblocks アプリケーションにおけるユーザー管理操作のためのコアビジネスロジック関数を提供します。これらのハンドラーは、ユーザー データベース操作、データ変換、レスポンスフォーマットの共通パターンをカプセル化します。
🎯 概要
User ハンドラーブロックは以下を目的として設計されています:
- 再利用可能な関数でユーザー業務ロジックをカプセル化
- 適切なエラーハンドリング付きでユーザー データベース操作を処理
- 異なるフォーマット間でユーザーデータを変換
- TypeScript 統合でタイプセーフティを確保
- 他のユーザー ブロックとのコンポジションをサポート
📋 User ハンドラータイプ
User 非同期ハンドラー
非同期ユーザー操作を実行する関数 (データベース呼び出し、API リクエストなど)。
User 同期ハンドラー
同期ユーザー操作を実行する純粋な関数 (データ変換、検証など)。
User ターミネーターハンドラー
最終的なユーザー レスポンスをフォーマットして返す関数。
🔧 利用可能な User ハンドラー
createUser
データベースに新しいユーザーを作成します。
このハンドラーは廃止予定です。
置き換え: User ブロックを使用
目的: 検証とエンティティ管理付きでユーザーの作成を処理
パラメータ:
payload:RouteHandlerPayload- リクエストコンテキストとデータを格納params.requestBody: ユーザー作成データ (名前、メールなど)context.db: データベース接続
返却値: Result<RouteHandlerPayload, Error> - userId 付きの成功またはエラー
ペイロード要件:
params.requestBodyはユーザー データを含まなければならない (名前、メールなど)context.dbはデータベース操作のために利用可能でなければならない
主要機能:
- リクエストボディが存在し、空でないことを検証
- タイムスタンプと ID 付きでベースエンティティを作成
- ユーザーをデータベースに挿入
- 成功時に userId を返却
- データベースエラーを適切に処理
使用法:
import { handlers } from '@nodeblocks/backend-sdk';
const { createUser } = handlers;
// コンポジションで使用
const userPipeline = compose(createUser, terminator);
getUserById
ID によって単一のユーザーを取得します。
このハンドラーは廃止予定です。
置き換え: User ブロックを使用
目的: 存在検証付きでユーザーデータを取得
パラメータ:
payload:RouteHandlerPayload- リクエストコンテキストとデータを格納params.requestParams.profileIdorcontext.data.profileId: 取得するプロファイル IDcontext.db: データベース接続
返却値: Result<RouteHandlerPayload, Error> - ユーザー付きの成功またはエラー
ペイロード要件:
- プロファイル ID は
params.requestParams.profileIdまたはcontext.data.profileIdで提供されなければならない context.dbはデータベース操作のために利用可能でなければならない
主要機能:
- userId が提供されていることを検証
- データベースで ID によってユーザーを検索
- ユーザーが見つからない場合は 404 を返却
- 成功時にユーザーデータを返却
- データベースエラーを適切に処理
使用法:
import { handlers } from '@nodeblocks/backend-sdk';
const { getUserById } = handlers;
// コンポジションで使用
const userPipeline = compose(getUserById, normalizeTerminator);
findUsers
オプションのフィルタリング付きで複数のユーザーを検索します。
このハンドラーは廃止予定です。
置き換え: User ブロックを使用
目的: フィルターサポート付きでユーザーのクエリを処理
パラメータ:
payload:RouteHandlerPayload- リクエストコンテキストとデータを格納params.requestQuery: ユーザーのオプションのフィルター基準context.db: データベース接続
返却値: Result<RouteHandlerPayload, Error> - ユーザー配列付きの成功またはエラー
ペイロード要件:
params.requestQueryはオプション - 提供された場合、MongoDB フィルターとして使用されるcontext.dbはデータベース操作のために利用可能でなければならない
主要機能:
- リクエストクエリからオプションのフィルターを受け入れる
- フィルターが提供されていない場合はすべてのユーザーを返却
- ユーザー配列を返却
- データベースエラーを適切に処理
使用法:
import { handlers } from '@nodeblocks/backend-sdk';
const { findUsers } = handlers;
// コンポジションで使用
const userPipeline = compose(findUsers, listTerminator);
updateUser
ID によって既存のユーザーを更新します。
このハンドラーは廃止予定です。
置き換え: User ブロックを使用
目的: 検証と競合検出付きでユーザーの更新を処理
パラメータ:
payload:RouteHandlerPayload- リクエストコンテキストとデータを格納params.requestParams.profileIdorcontext.data.profileId: 更新するプロファイル IDparams.requestBody: 更新するユーザー データcontext.db: データベース接続
返却値: Result<RouteHandlerPayload, Error> - 更新結果付きの成功またはエラー
ペイロード要件:
- プロファイル ID は
params.requestParams.profileIdまたはcontext.data.profileIdで提供されなければならない params.requestBodyは更新するユーザー データを含まなければならないcontext.dbはデータベース操作のために利用可能でなければならない
主要機能:
- userId が提供されていることを検証
- リクエストボディが存在し、空でないことを検証
- タイムスタンプ付きでベースエンティティを更新
- 更新前にユーザーが存在することを確認
- 成功時に更新結果を返却
- 見つからない場合と更新失敗を処理
使用法:
import { handlers } from '@nodeblocks/backend-sdk';
const { updateUser } = handlers;
// コンポジションで使用
const userPipeline = compose(updateUser, terminator);
deleteUser
ID によってユーザーを削除します。
このハンドラーは廃止予定です。
置き換え: User ブロックを使用
目的: 存在検証付きでユーザーの安全な削除を処理
パラメータ:
payload:RouteHandlerPayload- リクエストコンテキストとデータを格納params.requestParams.profileIdorcontext.data.profileId: 削除するプロファイル IDcontext.db: データベース接続
返却値: Result<RouteHandlerPayload, Error> - 削除結果付きの成功またはエラー
ペイロード要件:
- プロファイル ID は
params.requestParams.profileIdまたはcontext.data.profileIdで提供されなければならない context.dbはデータベース操作のために利用可能でなければならない
主要機能:
- userId が提供されていることを検証
- データベースから ID によってユーザーを削除
- ユーザーが見つからない場合は 404 を返却
- 成功時に削除結果を返却
- データベースエラーを適切に処理
使用法:
import { handlers } from '@nodeblocks/backend-sdk';
const { deleteUser } = handlers;
// コンポジションで使用
const userPipeline = compose(deleteUser, deleteTerminator);
lockUser
isLocked を true に設定することでユーザーをロックします。
このハンドラーは廃止予定です。
置き換え: User ブロックを使用
目的: 検証付きでユーザーアカウントのロックを処理
パラメータ:
payload:RouteHandlerPayload- リクエストコンテキストとデータを格納params.requestParams.identityIdorcontext.data.identityId: ロックするアイデンティティ IDcontext.db: データベース接続
返却値: Result<RouteHandlerPayload, Error> - ロック結果付きの成功またはエラー
ペイロード要件:
- アイデンティティ ID は
params.requestParams.identityIdまたはcontext.data.identityIdで提供されなければならない context.dbはデータベース操作のために利用可能でなければならない
主要機能:
- userId が提供されていることを検証
- ユーザーアカウントの isLocked を true に設定
- ロック前にユーザーが存在することを確認
- 成功時にロック結果を返却
- 見つからない場合とロック失敗を処理
使用法:
import { handlers } from '@nodeblocks/backend-sdk';
const { lockUser } = handlers;
// コンポジションで使用
const userPipeline = compose(lockUser, lockTerminator);
unlockUser
isLocked を false に設定することでユーザーのロックを解除します。
このハンドラーは廃止予定です。
置き換え: User ブロックを使用
目的: 検証付きでユーザーアカウントのアンロックを処理
パラメータ:
payload:RouteHandlerPayload- リクエストコンテキストとデータを格納params.requestParams.identityIdorcontext.data.identityId: アンロックするアイデンティティ IDcontext.db: データベース接続
返却値: Result<RouteHandlerPayload, Error> - アンロック結果付きの成功またはエラー
ペイロード要件:
- アイデンティティ ID は
params.requestParams.identityIdまたはcontext.data.identityIdで提供されなければならない context.dbはデータベース操作のために利用可能でなければならない
主要機能:
- userId が提供されていることを検証
- ユーザーアカウントの isLocked を false に設定
- アンロック前にユーザーが存在することを確認
- 成功時にアンロック結果を返却
- 見つからない場合とアンロック失敗を処理
使用法:
import { handlers } from '@nodeblocks/backend-sdk';
const { unlockUser } = handlers;
// コンポジションで使用
const userPipeline = compose(unlockUser, unlockTerminator);
🎯 User ターミネーターハンドラー
normalizeUserTerminator
データベース固有のフィールドを削除することでユーザーデータを正規化します。
このハンドラーは廃止予定です。
置き換え: User ブロックを使用
目的: API レスポンスのためにユーザーデータをクリーンアップ
パラメータ:
result:Result<RouteHandlerPayload, Error>- ペイロードまたはエラーを含む結果context.data.user: 前のハンドラーからのユーザーオブジェクト
返却値: 正規化されたユーザーオブジェクト
ペイロード要件:
context.data.userは前のハンドラーから利用可能でなければならない
使用法:
import { handlers } from '@nodeblocks/backend-sdk';
const { normalizeUserTerminator } = handlers;
// コンポジションで使用
const userPipeline = compose(getUserById, normalizeUserTerminator);
normalizeUsersListTerminator
各アイテムからデータベース固有のフィールドを削除することでユーザー一覧を正規化します。
このハンドラーは廃止予定です。
置き換え: User ブロックを使用
目的: API レスポンスのためにユーザー配列データをクリーンアップ
パラメータ:
result:Result<RouteHandlerPayload, Error>- ペイロードまたはエラーを含む結果context.data.users: 前のハンドラーからのユーザーオブジェクトの配列
返却値: 正規化されたユーザーオブジェクトの配列
ペイロード要件:
context.data.usersは前のハンドラーから利用可能でなければならない
使用法:
import { handlers } from '@nodeblocks/backend-sdk';
const { normalizeUsersListTerminator } = handlers;
// コンポジションで使用
const userPipeline = compose(findUsers, normalizeUsersListTerminator);
deleteUserTerminator
適切なステータスコード付きでユーザー削除を終了します。
このハンドラーは廃止予定です。
置き換え: User ブロックを使用
目的: 204 ステータス付きで成功した削除レスポンスをフォーマット
パラメータ:
result:Result<RouteHandlerPayload, Error>- ペイロードまたはエラーを含む結果context.data.deleteUser: 前のハンドラーからの削除結果
返却値: 204 statusCode 付きのレスポンスオブジェクト
ペイロード要件:
context.data.deleteUserは前のハンドラーから利用可能でなければならない
使用法:
import { handlers } from '@nodeblocks/backend-sdk';
const { deleteUserTerminator } = handlers;
// コンポジションで使用
const userPipeline = compose(deleteUser, deleteUserTerminator);
lockUserTerminator
適切なステータスコード付きでユーザー ロックを終了します。
このハンドラーは廃止予定です。
置き換え: User ブロックを使用
目的: 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
適切なステータスコード付きでユーザー アンロックを終了します。
このハンドラーは廃止予定です。
置き換え: User ブロックを使用
目的: 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);