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

⚙️ 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 or context.data.profileId: 取得するプロファイル ID
    • context.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 or context.data.profileId: 更新するプロファイル ID
    • params.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 or context.data.profileId: 削除するプロファイル ID
    • context.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 or context.data.identityId: ロックするアイデンティティ ID
    • context.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 or context.data.identityId: アンロックするアイデンティティ ID
    • context.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);