Skip to content

feat: impl many to many deletion strategy - #37

Merged
Sammster10 merged 2 commits into
masterfrom
feat/many-to-many-deletion-strategy
Aug 4, 2026
Merged

feat: impl many to many deletion strategy#37
Sammster10 merged 2 commits into
masterfrom
feat/many-to-many-deletion-strategy

Conversation

@Sammster10

Copy link
Copy Markdown
Member

No description provided.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds first-class deletion strategy support for @ManyToMany relationships by configuring join-table foreign keys appropriately and generating database triggers to enforce @Delete behavior consistently across PostgreSQL and H2, with accompanying documentation and test coverage.

Changes:

  • Implement many-to-many deletion behavior via new SQL trigger generation (PostgreSQL PL/pgSQL + H2 Trigger class) driven by @Delete(DeleteStrategy).
  • Update many-to-many foreign key ON DELETE behavior to align with CASCADE/SET_NULL/NO_ACTION semantics.
  • Add comprehensive tests validating join cleanup, child deletion behavior, composite links, and operation without foreign keys; update docs/javadocs to reflect semantics.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
README.md Documents updated many-to-many deletion semantics for @Delete.
core/src/test/java/net/staticstudios/data/mock/user/MockUser.java Removes now-obsolete TODO comment about unimplemented many-to-many delete strategy.
core/src/test/java/net/staticstudios/data/DeletionTest.java Adds extensive tests for many-to-many deletion strategies, triggers, FKs, and composite links.
core/src/main/java/net/staticstudios/data/parse/SQLManyToManyDeleteStrategyTrigger.java Introduces SQL trigger DDL generation for many-to-many delete strategy behavior.
core/src/main/java/net/staticstudios/data/parse/SQLBuilder.java Wires many-to-many delete strategy into FK ON DELETE rules and trigger creation.
core/src/main/java/net/staticstudios/data/impl/h2/trigger/H2ManyToManyDeleteStrategyTrigger.java Adds H2 trigger implementation to enforce many-to-many deletion behavior.
annotations/src/main/java/net/staticstudios/data/ManyToMany.java Clarifies that delete strategies are still applied via triggers when fkey=false.
annotations/src/main/java/net/staticstudios/data/DeleteStrategy.java Updates enum documentation to reflect many-to-many behavior for each strategy.
annotations/src/main/java/net/staticstudios/data/Delete.java Adds/clarifies javadoc for @Delete.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@Sammster10
Sammster10 merged commit ab1f6cf into master Aug 4, 2026
1 check passed
@Sammster10
Sammster10 deleted the feat/many-to-many-deletion-strategy branch August 4, 2026 23:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants