メインコンテンツまでスキップ
バージョン: 0.4.2

🏢 組織ハンドラーブロック

組織ハンドラーブロックは、Nodeblocksアプリケーションにおける組織管理操作のためのコアビジネスロジック関数を提供します。これらのハンドラーは、組織データベース操作、データ変換、レスポンスフォーマッティングの共通パターンをカプセル化します。


🎯 概要

組織ハンドラーブロックは以下を目的として設計されています:

  • 再利用可能な関数での組織ビジネスロジックのカプセル化
  • 適切なエラー管理による組織データベース操作の処理
  • 異なるフォーマット間での組織データの変換
  • TypeScript統合による型安全性の確保
  • 他の組織ブロックとのコンポジションのサポート

📋 組織ハンドラー種類

組織非同期ハンドラー

非同期組織操作(データベース呼び出し、APIリクエストなど)を実行する関数。

組織同期ハンドラー

同期組織操作(データ変換、検証など)を実行する関数。

組織ターミネーターハンドラー

最終的な組織レスポンスをフォーマットして返す関数。


🔧 利用可能な組織ハンドラー

createOrganization

オーナー割り当てにより、データベースに新しい組織を作成します。

目的: オーナー割り当てとエンティティ管理による組織作成を処理

パラメータ:

  • payload: リクエストコンテキストとデータを含むRouteHandlerPayload

戻り値: Result<RouteHandlerPayload, Error> - organizationIdを含む成功またはエラー

使用例:

// ルートコンポジションでの使用:
const createOrganizationRoute = withRoute({
handler: compose(createOrganization, lift(formatOrganizationResponse))
});

主要機能:

  • リクエストボディが存在し空でないことを検証
  • ownerIdが提供されていることを検証
  • 初期ユーザーにオーナー役割を割り当て
  • タイムスタンプとIDを含むベースエンティティを作成
  • データベースに組織を挿入
  • 成功時にorganizationIdを返す
  • データベースエラーを適切に処理

getOrganizationById

IDで単一の組織を取得します。

目的: 存在検証による組織データの取得

パラメータ:

  • payload: リクエストコンテキストとデータを含むRouteHandlerPayload

戻り値: Result<RouteHandlerPayload, Error> - organizationを含む成功またはエラー

使用例:

compose(getOrganizationById, normalizeTerminator);

主要機能:

  • organizationIdが提供されていることを検証
  • データベースでIDによる組織を検索
  • 組織が見つからない場合は404を返す
  • 成功時に組織データを返す
  • データベースエラーを適切に処理

findOrganizations

オプションのフィルタリングで複数の組織を検索します。

目的: フィルターサポートによる組織のクエリを処理

パラメータ:

  • payload: リクエストコンテキストとデータを含むRouteHandlerPayload

戻り値: Result<RouteHandlerPayload, Error> - organizations配列を含む成功またはエラー

使用例:

compose(findOrganizations, listTerminator);

主要機能:

  • リクエストクエリからのオプションフィルターを受け入れ
  • フィルターが提供されない場合は全組織を返す
  • organizationsの配列を返す
  • データベースエラーを適切に処理

updateOrganization

IDにより既存の組織を更新します。

目的: 検証と競合検出による組織更新を処理

パラメータ:

  • payload: リクエストコンテキストとデータを含むRouteHandlerPayload

戻り値: Result<RouteHandlerPayload, Error> - organizationIdを含む成功またはエラー

使用例:

compose(updateOrganization, getOrganizationById, normalizeTerminator);

主要機能:

  • organizationIdが提供されていることを検証
  • リクエストボディが存在し空でないことを検証
  • タイムスタンプを含むベースエンティティを更新
  • 更新前に組織が存在することを確認
  • 成功時にorganizationIdを返す
  • 見つからない場合と更新失敗を処理

deleteOrganization

安全な削除と存在検証により、IDで組織を削除します。

目的: 存在検証による組織の安全な削除を処理

パラメータ:

  • payload: リクエストコンテキストとデータを含むRouteHandlerPayload

戻り値: Result<RouteHandlerPayload, Error> - 削除フラグを含む成功またはエラー

使用例:

compose(deleteOrganization, deleteTerminator);

主要機能:

  • organizationIdが提供されていることを検証
  • データベースからIDによる組織を削除
  • 組織が見つからない場合は404を返す
  • 削除確認フラグを返す
  • データベースエラーを適切に処理

getOrganizationUserRole

組織内でのユーザーの役割を取得します。

目的: 組織アクセス制御のためのユーザー役割情報を取得

パラメータ:

  • payload: リクエストコンテキストとデータを含むRouteHandlerPayload

戻り値: Result<RouteHandlerPayload, Error> - 役割を含む成功またはエラー

使用例:

compose(getOrganizationUserRole, roleTerminator);

主要機能:

  • organizationIdとuserIdが提供されていることを検証
  • IDによる組織とユーザーを検索
  • 組織またはユーザーが見つからない場合は404を返す
  • 成功時にユーザー役割を返す
  • データベースエラーを適切に処理

checkOrganizationUserExistence

組織内にユーザーが存在するかをチェックします。

目的: アクセス制御のための組織内ユーザーメンバーシップを検証

パラメータ:

  • payload: リクエストコンテキストとデータを含むRouteHandlerPayload

戻り値: Result<RouteHandlerPayload, Error> - isUserInOrganizationフラグを含む成功またはエラー

使用例:

compose(checkOrganizationUserExistence, existenceTerminator);

主要機能:

  • organizationIdとuserIdが提供されていることを検証
  • IDによる組織を検索
  • 組織のusers配列にユーザーが存在するかをチェック
  • ユーザー存在のブールフラグを返す
  • データベースエラーを適切に処理

findOrganizationUsers

組織内のユーザーを検索します(プレースホルダー実装)。

目的: ページネーションサポート付きの組織ユーザークエリを処理

パラメータ:

  • payload: リクエストコンテキストとデータを含むRouteHandlerPayload

戻り値: Result<RouteHandlerPayload, Error> - organizationUsersオブジェクトを含む成功またはエラー

使用例:

compose(findOrganizationUsers, usersTerminator);

主要機能:

  • organizationIdが提供されていることを検証
  • IDによる組織を検索
  • countとtotalを含むusers配列を返す
  • データベースエラーを適切に処理
  • (TODO: ページネーションロジックを追加)

upsertOrganizationUsers

役割マージ付きで組織にユーザーを追加または更新します。

目的: 役割管理付きの組織ユーザーの追加/更新を処理

パラメータ:

  • payload: リクエストコンテキストとデータを含むRouteHandlerPayload

戻り値: Result<RouteHandlerPayload, Error> - アップサート結果を含む成功またはエラー

使用例:

compose(upsertOrganizationUsers, upsertTerminator);

主要機能:

  • organizationIdが提供されていることを検証
  • users配列が存在し空でないことを検証
  • IDによる組織を検索
  • IDによる新しいユーザーと既存ユーザーをマージ
  • ユーザーIDと役割をサニタイズ
  • データベースのusers配列を更新
  • 成功時にアップサート結果を返す
  • 見つからない場合と更新失敗を処理
  • データベースエラーを適切に処理

deleteOrganizationUser

組織からユーザーを削除します。

目的: 組織からのユーザーの安全な削除を処理

パラメータ:

  • payload: リクエストコンテキストとデータを含むRouteHandlerPayload

戻り値: Result<RouteHandlerPayload, Error> - 削除結果を含む成功またはエラー

使用例:

compose(deleteOrganizationUser, deleteTerminator);

主要機能:

  • organizationIdとuserIdが提供されていることを検証
  • 組織のusers配列からユーザーを削除
  • 組織が見つからない場合は404を返す
  • 成功時に削除結果を返す
  • 見つからない場合と更新失敗を処理
  • データベースエラーを適切に処理

findOrganizationsForUser

特定のユーザーの組織を検索します(プレースホルダー実装)。

目的: 役割フィルタリング付きのユーザー組織クエリを処理

パラメータ:

  • payload: リクエストコンテキストとデータを含むRouteHandlerPayload

戻り値: Result<RouteHandlerPayload, Error> - organizationsForUserオブジェクトを含む成功またはエラー

使用例:

compose(userSchema, findOrganizationsForUser, orgsTerminator);

主要機能:

  • userIdが提供されていることを検証
  • オプションの役割フィルターを受け入れ
  • ユーザーがメンバーである組織を検索(オプションで役割別)
  • countとtotalを含む組織配列を返す
  • データベースエラーを適切に処理
  • (TODO: ページネーションと拡張ロジックを追加)

🎯 組織ターミネーターハンドラー

normalizeOrganizationTerminator

データベース固有フィールドを削除して組織データを正規化します。

目的: APIレスポンス用の組織データをクリーンアップ

パラメータ:

  • result: Result<RouteHandlerPayload, Error>

戻り値: 正規化された組織オブジェクト

使用例:

compose(schema, getOrganizationById, normalizeOrganizationTerminator);

normalizeOrganizationsListTerminator

各項目からデータベース固有フィールドを削除して組織リストを正規化します。

目的: APIレスポンス用の組織配列データをクリーンアップ

パラメータ:

  • result: Result<RouteHandlerPayload, Error>

戻り値: 正規化された組織オブジェクトの配列

使用例:

compose(schema, findOrganizations, normalizeOrganizationsListTerminator);

deleteOrganizationTerminator

適切なステータスコードによる組織削除を終了します。

目的: 204ステータスによる削除成功レスポンスをフォーマット

パラメータ:

  • result: Result<RouteHandlerPayload, Error>

戻り値: 204 statusCodeを含むレスポンスオブジェクト

使用例:

compose(schema, deleteOrganization, deleteOrganizationTerminator);

normalizeOrganizationUserRoleTerminator

APIレスポンス用の組織ユーザー役割データを正規化します。

目的: APIレスポンス用のユーザー役割データをフォーマット

パラメータ:

  • result: Result<RouteHandlerPayload, Error>

戻り値: 正規化された役割データを含むオブジェクト

使用例:

compose(schema, getOrganizationUserRole, normalizeOrganizationUserRoleTerminator);

normalizeOrganizationUserExistenceTerminator

APIレスポンス用の組織ユーザー存在データを正規化します。

目的: APIレスポンス用のユーザー存在チェックデータをフォーマット

パラメータ:

  • result: Result<RouteHandlerPayload, Error>

戻り値: 正規化された存在データを含むオブジェクト

使用例:

compose(schema, checkOrganizationUserExistence, normalizeOrganizationUserExistenceTerminator);

normalizeOrganizationUsersListTerminator

組織ユーザーリストを正規化します(プレースホルダー実装)。

目的: APIレスポンス用の組織ユーザーリストをフォーマット

パラメータ:

  • result: Result<RouteHandlerPayload, Error>

戻り値: 正規化されたユーザーリストデータを含むオブジェクト

使用例:

compose(schema, findOrganizationUsers, normalizeOrganizationUsersListTerminator);

deleteOrganizationUserTerminator

適切なステータスコードによる組織ユーザー削除を終了します。

目的: 204ステータスによるユーザー削除成功レスポンスをフォーマット

パラメータ:

  • result: Result<RouteHandlerPayload, Error>

戻り値: 204 statusCodeを含むレスポンスオブジェクト

使用例:

compose(schema, deleteOrganizationUser, deleteOrganizationUserTerminator);

upsertOrganizationUsersTerminator

適切なステータスコードによる組織ユーザーアップサートを終了します。

目的: 204ステータスによるユーザーアップサート成功レスポンスをフォーマット

パラメータ:

  • result: Result<RouteHandlerPayload, Error>

戻り値: 204 statusCodeを含むレスポンスオブジェクト

使用例:

compose(schema, upsertOrganizationUsers, upsertOrganizationUsersTerminator);

normalizeOrganizationsForUserTerminator

APIレスポンス用のユーザー組織データを正規化します。

目的: APIレスポンス用のユーザー組織データをフォーマット

パラメータ:

  • result: Result<RouteHandlerPayload, Error>

戻り値: 正規化されたユーザー組織データを含むオブジェクト

使用例:

compose(schema, findOrganizationsForUser, normalizeOrganizationsForUserTerminator);

🔗 関連ドキュメント