⚙️ プロフィールハンドラー
プロフィールハンドラーは Express ミドルウェアではなく、ルートパイプライン関数です。params と context から RouteHandlerPayload 値を読み取り、成功した値を context.data にマージするか、成功した Result を HTTP レスポンスディスクリプターで終了します。いくつかのエクスポートは非推奨です。新しいカスタム合成ではブロックへ移行してください。
一覧
| ハンドラー | パイプラインでの役割 | 入力 / コンテキスト | 結果 / 動作 / エラー | 使用するルート |
|---|---|---|---|---|
createProfile | ハンドラー | requestBody、db.profiles | 基本エンティティを作成し、profileId を書き込みます。空または失敗した本文は 400、データベース失敗は 500。 | createProfileRoute |
getProfileById | ハンドラー | context.data.profileId またはパス ID、db.profiles | profile を書き込みます。ID 欠落は 400、不在は 404、データベース失敗は 500。 | createProfileRoute、getProfileRoute、updateProfileRoute、deleteProfileRoute |
findProfiles | ハンドラー | requestQuery、db.profiles | profiles を書き込みます。クエリ失敗時は 500。 | findProfilesRoute |
updateProfile | ハンドラー | パス/コンテキスト ID、requestBody、db.profiles | updateProfile を書き込みます。ID または本文の不在、変更なしは 400、不在は 404。 | updateProfileRoute |
deleteProfile | ハンドラー | パス/コンテキスト ID、db.profiles | deleteProfile を書き込みます。ID 欠落は 400、不在は 404、失敗時は 500。 | deleteProfileRoute |
normalizeProfileTerminator | 非推奨ターミネーター | context.data.profile | _id を削除してプロフィールを返します。エラーまたはデータ欠落時にスローします。 | カスタム合成のみ |
normalizeProfilesListTerminator | 非推奨ターミネーター | context.data.profiles | すべてのプロフィールから _id を削除します。エラー時にスローします。 | カスタム合成のみ |
deleteProfileTerminator | 非推奨ターミネーター | context.data.deleteProfile | { statusCode: 204 } を返します。エラーまたはデータ欠落時にスローします。 | deleteProfileRoute |
詳細
createProfile
実装
非推奨: ブロックへ移行してください。params.requestBody と context.db.profiles を読み取ります。本文がないか空の場合は NodeblocksError(400, 'Request body is required', 'createProfile') を返します。成功時には、本文を展開する前に空の organizationFollows、productLikes、profileFollows を指定して createBaseEntity を呼び出し、そのエンティティを挿入し、mergeData で { profileId: baseEntity.id } を書き込みます。insertedId のない結果は 400、挿入例外は 500 を返します。createProfileRoute の先頭です。
getProfileById
実装
非推奨: ブロックへ移行してください。params.requestParams?.profileId より前に context.data?.profileId を読み取り、選んだ ID を文字列へ強制変換して context.db.profiles.findOne({ id }) を呼び出します。mergeData で { profile } を書き込みます。ID がない場合は 400、プロフィールがない場合は 404、データベース例外は 500 を返します。createProfileRoute、getProfileRoute、updateProfileRoute、deleteProfileRoute で使用されます。
findProfiles
実装
非推奨: ブロックへ移行してください。params.requestQuery と context.db.profiles を読み取り、requestQuery || {} を MongoDB フィルターとして使用し、toArray() でカーソルを実体化して、mergeData で { profiles } を書き込みます。クエリ例外は NodeblocksError(500, 'Failed to find profiles', 'findProfiles') を返します。findProfilesRoute ではページネーションでラップされます。
updateProfile
実装
非推奨: ブロックへ移行してください。パス ID より前にデータ ID、params.requestBody、context.db.profiles を読み取ります。updateOne({ id: String(profileId) }, { $set: updateBaseEntity(requestBody) }) を呼び出し、{ updateProfile: result } を書き込みます。ID 欠落、本文が空、または modifiedCount === 0 は 400、matchedCount === 0 は 404、例外は 500 を返します。updateProfileRoute で使用されます。
deleteProfile
実装
非推奨: ブロックへ移行してください。パス ID より前にデータ ID を読み取り、パブリック文字列 ID で context.db.profiles を削除します。{ deleteProfile: result } を書き込みます。ID がない場合は 400、deletedCount === 0 は 404、偽のドライバー結果または例外は 500 を返します。deleteProfileRoute で使用されます。
normalizeProfileTerminator
実装
非推奨: 正規化処理と orThrow を使用してください。Result<RouteHandlerPayload, Error> を受け取り、エラー結果を再スローし、context.data.profile を必要とします(ない場合は NodeblocksError(500, 'Unknown error normalizing profile', 'normalizeProfileTerminator') をスローします)。そのオブジェクトから _id を除いて返します。カスタム合成のみで、エクスポートされた Profile ルートは使用しません。
normalizeProfilesListTerminator
実装
非推奨: 正規化処理と orThrow を使用してください。Result<RouteHandlerPayload, Error> を受け取り、エラー結果を再スローし、context.data.profiles をマッピングして、すべてのプロフィールから _id を除いて返します。data.profiles の不在は防御しません。カスタム合成のみで、エクスポートされた Profile ルートは使用しません。
deleteProfileTerminator
実装
非推奨: 正規化処理と orThrow を使用してください。Result<RouteHandlerPayload, Error> を受け取り、エラー結果を再スローし、context.data.deleteProfile を必要とします(ない場合は NodeblocksError(500, 'Unknown error deleting profile', 'deleteProfileTerminator') をスローします)。正確に { statusCode: 204 } を返します。deleteProfileRoute の最終ターミネーターです。