⚙️ アトリビューションハンドラー
アトリビューションハンドラーは、Expressミドルウェアではなくルートパイプライン関数です。params および context から RouteHandlerPayload の値を読み取り、成功した値を context.data にマージします。または、成功した Result をHTTPレスポンス記述子で終了します。
目次
| ハンドラー | パイプラインの役割 | 入力 / context | 結果 / 動作 / エラー | ルートでの使用先 |
|---|---|---|---|---|
createAttributeGroup | ハンドラー | 空でない requestBody、attributes コレクション | attributeId を書き込み;基本エンティティを作成;失敗時に 400 または 500。 | createAttributeRoute |
updateAttributeGroup | ハンドラー | アトリビューションID、空でない requestBody、attributes コレクション | 基本フィールドを更新し attributeId を書き込み;失敗時に 400、404、または 500。 | updateAttributeRoute |
getAttributeGroupById | ハンドラー | context または path の attributeId、attributes コレクション | attributeGroup を書き込み;失敗時に 400、404、または 500。 | createAttributeRoute、getAttributeRoute、updateAttributeRoute |
findAttributeGroups | ハンドラー | requestQuery、attributes コレクション | 一致する attributeGroups を書き込み;失敗時に 500。 | findAttributesRoute |
deleteAttributeGroup | ハンドラー | context または path の attributeId、attributes コレクション | attributeGroupDeleted を書き込み;失敗時に 400、404、または 500。 | deleteAttributeRoute |
createAttributeGroupTerminator | 終端器 | context.data.attributeGroup | 正規化されたデータを statusCode: 201 で返します;データがない場合は 404。 | createAttributeRoute |
normalizeAttributeGroupTerminator | 終端器 | context.data.attributeGroup | _id を削除しグループを返します;データがない場合は 404。 | getAttributeRoute、updateAttributeRoute |
normalizeAttributesListTerminator | 終端器 | context.data.attributeGroups | _id を削除し、ページネーションメタデータを保持します;予期せぬリストデータは 500。 | findAttributesRoute |
deleteAttributeTerminator | 終端器 | context.data.attributeGroupDeleted | { statusCode: 204 } を返します;削除フラグがない場合は 500。 | deleteAttributeRoute |
詳細
createAttributeGroup
実装
params.requestBody および context.db.attributes を読み取ります。空でないボディを要求し、createBaseEntity(requestBody) を挿入した後、後続の取得ハンドラー用に生成された attributeId を context.data に書き込みます。ボディがない場合または insertedId がない場合は 400;エンティティ/挿入操作中にスローされた場合は 500。createAttributeRoute によって使用されます。
updateAttributeGroup
実装
params.requestParams.attributeId より前に context.data.attributeId を読み取り、さらに params.requestBody および context.db.attributes を読み取ります。IDがない場合または空のボディの場合は、スキーマが {} を許可していても 400 です。updateBaseEntity を適用し、文字列IDで更新し、再読み込みハンドラー用に attributeId を書き込みます。一致しない場合は 404、変更がない場合は 400、スローされた更新は 500。updateAttributeRoute によって使用されます。
getAttributeGroupById
実装
params.requestParams.attributeId より前に context.data.attributeId を読み取り、文字列IDで context.db.attributes をクエリします。IDがない場合は 400、レコードがない場合は 404、スローされたクエリは 500 です。成功は保存されたレコードを context.data.attributeGroup に書き込みます。createAttributeRoute、getAttributeRoute、updateAttributeRoute によって使用されます。
findAttributeGroups
実装
params.requestQuery を読み取り、それをそのまま、または {} を context.db.attributes.find に渡して、カーソルを配列に変換し、context.data.attributeGroups に書き込みます。スローされたクエリ/カーソル操作は 500 です;リストルートでは withPagination がこのハンドラーをラップします。findAttributesRoute によって使用されます。
deleteAttributeGroup
実装
params.requestParams.attributeId より前に context.data.attributeId を読み取り、文字列IDで context.db.attributes から削除します。IDがない場合は 400、削除件数がゼロの場合は 404、falseの結果またはスローされた削除は 500 です。成功は context.data.attributeGroupDeleted: true を書き込みます。deleteAttributeRoute によって使用されます。
createAttributeGroupTerminator
実装
失敗したパイプライン結果を再スローし、context.data.attributeGroup を読み取り、がない場合に 404 をスローします。MongoDB _id を削除し、正確なレスポンス記述子 {data: attributeGroup, statusCode: 201} を返します。createAttributeRoute によって使用されます。
normalizeAttributeGroupTerminator
実装
失敗したパイプライン結果を再スローし、context.data.attributeGroup を読み取り、がない場合に 404 をスローします。MongoDB _id を削除し、残りのグループを通常の 200 レスポンスボディとして返します。getAttributeRoute および updateAttributeRoute によって使用されます。
normalizeAttributesListTerminator
実装
失敗したパイプライン結果を再スローし、context.data.attributeGroups を読み取ります。生の配列または data が配列であるページネーションオブジェクトを受け入れます;他の形状は 500 をスローします。すべての MongoDB _id を削除し、配列または {data, metadata: {pagination}} を返します。findAttributesRoute によって使用されます。
deleteAttributeTerminator
実装
失敗したパイプライン結果を再スローし、context.data.attributeGroupDeleted を読み取り、フラグがないまたはfalseの場合に 500 をスローします。成功は正確な記述子 {statusCode: 204} を返します。deleteAttributeRoute によって使用されます。