pub(crate) async fn handle_post_message_new(
db: &DatabaseConnection,
cognito_id: Uuid,
body: &str,
row_log: &str,
cors_origin: &str,
) -> Result<Response, Error>Expand description
新規お問い合わせを作成する
リクエストボディから CreateMessageRequest をデシリアライズし、
UUID v7 の ID と現在時刻を付与してデータベースに保存します。
保存したお問い合わせを CreateMessageResponse として HTTP 201 で返します。
§データベース操作
INSERT INTO messages (id, cognito_id, created_at, body, row_log, is_from_user)
VALUES ($1, $2, $3, $4, $5, $6)§ID の生成
お問い合わせ ID には UUID v7 (uuid::Uuid::now_v7) を使用します。
UUID v7 はタイムスタンプベースのため、作成順ソートが可能です。
§Arguments
db- SeaORM データベース接続。Aurora DSQL への接続が確立済みである必要があります。cognito_id- JWTクレームのsubフィールドから取得した Cognito ユーザーの UUID。 お問い合わせのオーナーとしてmessages.cognito_id列に保存されます。body- リクエストボディの文字列(JSON形式)。CreateMessageRequestにデシリアライズされます。body(本文)フィールドを含む必要があります。row_log- API Gateway からの生のイベントログ。cors_origin- レスポンスのAccess-Control-Allow-Originヘッダーに設定するオリジン。
§Returns
Ok(Response)- HTTP 201 とCreateMessageResponseのJSON(作成されたお問い合わせ情報を含む)Err(Error)- データベース挿入エラー、またはJSONシリアライズエラー
§Errors
- リクエストボディのJSON解析失敗時:
"Failed to parse request body: ..."をログに記録しErrを返します。 - データベース挿入失敗時:
"Failed to insert inquiry: ..."をログに記録しErrを返します。 - JSONシリアライズ失敗時:
serde_json::to_valueのエラーを?で伝播します。