Skip to content

feat(db): Aurora DSQL の FOREIGN KEY 対応を取り込み、参照整合性を DB 側へ移譲する #291

Description

@badmintoncryer

Problem

Aurora DSQL が FOREIGN KEY に対応しました(Working with foreign key constraints)。ADD CONSTRAINTNOT VALID が必要な点を除けば、ほぼ Postgres と同じように書けます。

一方 kit は FK 非対応前提のままで、packages/db/src/dsql-compat.ts が生成 SQL から REFERENCES / FOREIGN KEY を無言で削除します。schema.ts に .references() を書いてもエラーにならず、FK なしのテーブルができます。DROP CONSTRAINT も "Table recreation required." で弾かれますが、こちらも今は使えます。

FK 非対応時代は「無言で削除」が妥当でしたが、現在の仕様であればDB側でも参照整合性を設けるのが好ましそうです。

Proposed solution

  • dsql-compat.ts: FK をそのまま通し、ADD CONSTRAINT には NOT VALID を自動付与(CREATE INDEXASYNC と同じ方針)。DROP CONSTRAINT も許可する
  • サンプルスキーマ: TodoItem.userIdUser.id に FK を追加(参照アクションは既定の NO ACTION)
  • アプリ層: safe-action.ts の users 行の存在チェックを削除。FK があれば重複するため
  • AGENTS.md / packages/db/README.md と ADR を更新

ALTER TABLE 許可リスト全体の見直しは #220 のスコープなので、ここでは FK 周りだけに絞ります。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions