⚙️ 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.profileId
orcontext.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.profileId
orcontext.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.profileId
orcontext.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.identityId
orcontext.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.identityId
orcontext.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);