DB

概要

DB レイヤーは infrastructure/liquibase_migrate/template.yaml で Aurora DSQL クラスターを作成し、changelog.xmlchanges/*.sql でスキーマを適用する構成です。
アプリケーション本体は Rust Lambda から IAM 認証トークンを使って接続し、ORM には SeaORM を使用します。

参照ソース

パス 内容
infrastructure/liquibase_migrate/template.yaml Aurora DSQL クラスター定義
infrastructure/liquibase_migrate/changelog.xml Liquibase の変更セット一覧
infrastructure/liquibase_migrate/changes/*.sql テーブル・インデックス作成 SQL
infrastructure/sea_orm/src/entity/*.rs スキーマから生成された SeaORM エンティティ
api/lambda/src/main.rs DSQL 接続と問い合わせ CRUD

構成要素

要素 役割
Aurora DSQL アプリケーションデータの保存先
Liquibase スキーマ変更の適用管理
SeaORM Rust API から使う型安全な DB アクセス層
GitHub Actions DSQL デプロイ、マイグレーション実行、SeaORM 再生成を自動化

現在のスキーマ概要

テーブル 用途 状態
inquiries 問い合わせ本体 API から利用中
users 将来のアプリ内ユーザー情報保持候補 現時点では未接続
databasechangelog / databasechangeloglock Liquibase 管理テーブル SeaORM 生成対象に含まれる

テーブル定義の詳細は DB スキーマと ORM を参照してください。

マイグレーションと ORM の流れ

  1. db_migrate.yaml が Aurora DSQL クラスターをデプロイします。
  2. 同 workflow の migrate ジョブが Liquibase を使って changelog.xml を適用します。
  3. generate_sea_orm.yaml が DSQL に接続し、infrastructure/sea_orm/src/entity/ を再生成します。
  4. API は生成済み sea_orm_entities クレートを参照してクエリを実行します。

実装上のポイント

  • DSQL 接続情報は CloudFormation Export の DSQLClusterEndpoint から他ワークフローや API に引き渡されます。
  • API は毎回 IAM ベースの一時トークンを生成し、postgres://admin:<token>@... 形式で接続します。
  • inquiries には emailcreated_at のインデックスがあり、ユーザー別一覧取得と時系列ソートを補助します。
  • users テーブルは存在しますが、Cognito 認証とまだ統合されていません。

関連ページ

results matching ""

    No results matching ""