This is an automated email from the ASF dual-hosted git repository.
sbp pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tooling-trusted-release.git
The following commit(s) were added to refs/heads/main by this push:
new b0caabe Cascade release deletion to its check results
b0caabe is described below
commit b0caabea5e0c432cd2213c5618aaecd7c105a2c7
Author: Sean B. Palmer <[email protected]>
AuthorDate: Thu Jun 12 15:35:38 2025 +0100
Cascade release deletion to its check results
---
atr/db/models.py | 6 +++--
migrations/versions/0008_2025.06.12_26c0022b.py | 32 +++++++++++++++++++++++++
2 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/atr/db/models.py b/atr/db/models.py
index 1483951..a7abafe 100644
--- a/atr/db/models.py
+++ b/atr/db/models.py
@@ -614,7 +614,9 @@ class Release(sqlmodel.SQLModel, table=True):
)
# One-to-many: A release can have multiple check results
- check_results: list["CheckResult"] =
sqlmodel.Relationship(back_populates="release")
+ check_results: list["CheckResult"] = sqlmodel.Relationship(
+ back_populates="release", sa_relationship_kwargs={"cascade": "all,
delete-orphan"}
+ )
# The combination of project_name and version must be unique
__table_args__ = (sqlmodel.UniqueConstraint("project_name", "version",
name="unique_project_version"),)
@@ -704,7 +706,7 @@ class CheckResultStatus(str, enum.Enum):
class CheckResult(sqlmodel.SQLModel, table=True):
id: int = sqlmodel.Field(default=None, primary_key=True)
- release_name: str = sqlmodel.Field(foreign_key="release.name")
+ release_name: str = sqlmodel.Field(foreign_key="release.name",
ondelete="CASCADE")
release: Release = sqlmodel.Relationship(back_populates="check_results")
# We don't call this latest_revision_number, because it might not be the
latest
revision_number: str | None = sqlmodel.Field(default=None, index=True)
diff --git a/migrations/versions/0008_2025.06.12_26c0022b.py
b/migrations/versions/0008_2025.06.12_26c0022b.py
new file mode 100644
index 0000000..567ec9c
--- /dev/null
+++ b/migrations/versions/0008_2025.06.12_26c0022b.py
@@ -0,0 +1,32 @@
+"""Add cascade delete to CheckResult on release
+
+Revision ID: 0008_2025.06.12_26c0022b
+Revises: 0007_2025.06.11_4887c85c
+Create Date: 2025-06-12 14:34:03.092016+00:00
+"""
+
+from collections.abc import Sequence
+
+from alembic import op
+
+# Revision identifiers, used by Alembic
+revision: str = "0008_2025.06.12_26c0022b"
+down_revision: str | None = "0007_2025.06.11_4887c85c"
+branch_labels: str | Sequence[str] | None = None
+depends_on: str | Sequence[str] | None = None
+
+
+def upgrade() -> None:
+ with op.batch_alter_table("checkresult", schema=None) as batch_op:
+
batch_op.drop_constraint(batch_op.f("fk_checkresult_release_name_release"),
type_="foreignkey")
+ batch_op.create_foreign_key(
+ batch_op.f("fk_checkresult_release_name_release"), "release",
["release_name"], ["name"], ondelete="CASCADE"
+ )
+
+
+def downgrade() -> None:
+ with op.batch_alter_table("checkresult", schema=None) as batch_op:
+
batch_op.drop_constraint(batch_op.f("fk_checkresult_release_name_release"),
type_="foreignkey")
+ batch_op.create_foreign_key(
+ batch_op.f("fk_checkresult_release_name_release"), "release",
["release_name"], ["name"]
+ )
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]