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-releases.git
The following commit(s) were added to refs/heads/main by this push:
new cd44f0e Add a separate revision counter table
cd44f0e is described below
commit cd44f0ea026afcddab13d85f302f67a2629b26ce
Author: Sean B. Palmer <[email protected]>
AuthorDate: Wed Jan 14 16:08:37 2026 +0000
Add a separate revision counter table
---
atr/db/__init__.py | 14 +++++++++
atr/models/sql.py | 6 ++++
migrations/versions/0038_2026.01.14_267562c1.py | 39 +++++++++++++++++++++++++
3 files changed, 59 insertions(+)
diff --git a/atr/db/__init__.py b/atr/db/__init__.py
index 44b0f93..050f307 100644
--- a/atr/db/__init__.py
+++ b/atr/db/__init__.py
@@ -615,6 +615,20 @@ class Session(sqlalchemy.ext.asyncio.AsyncSession):
return Query(self, query)
+ def revision_counter(
+ self,
+ release_name: Opt[str] = NOT_SET,
+ last_allocated_number: Opt[int] = NOT_SET,
+ ) -> Query[sql.RevisionCounter]:
+ query = sqlmodel.select(sql.RevisionCounter)
+
+ if is_defined(release_name):
+ query = query.where(sql.RevisionCounter.release_name ==
release_name)
+ if is_defined(last_allocated_number):
+ query = query.where(sql.RevisionCounter.last_allocated_number ==
last_allocated_number)
+
+ return Query(self, query)
+
def ssh_key(
self,
fingerprint: Opt[str] = NOT_SET,
diff --git a/atr/models/sql.py b/atr/models/sql.py
index df0e461..495e36c 100644
--- a/atr/models/sql.py
+++ b/atr/models/sql.py
@@ -329,6 +329,12 @@ class PersonalAccessToken(sqlmodel.SQLModel, table=True):
label: str | None = None
+# RevisionCounter:
+class RevisionCounter(sqlmodel.SQLModel, table=True):
+ release_name: str = sqlmodel.Field(primary_key=True)
+ last_allocated_number: int = sqlmodel.Field(default=0)
+
+
# SSHKey:
class SSHKey(sqlmodel.SQLModel, table=True):
fingerprint: str = sqlmodel.Field(primary_key=True)
diff --git a/migrations/versions/0038_2026.01.14_267562c1.py
b/migrations/versions/0038_2026.01.14_267562c1.py
new file mode 100644
index 0000000..f29230d
--- /dev/null
+++ b/migrations/versions/0038_2026.01.14_267562c1.py
@@ -0,0 +1,39 @@
+"""Add a RevisionCounter table to ensure the persistence of serial numbers
+
+Revision ID: 0038_2026.01.14_267562c1
+Revises: 0037_2026.01.13_0cefcaea
+Create Date: 2026-01-14 15:52:09.557729+00:00
+"""
+
+from collections.abc import Sequence
+
+import sqlalchemy as sa
+from alembic import op
+
+# Revision identifiers, used by Alembic
+revision: str = "0038_2026.01.14_267562c1"
+down_revision: str | None = "0037_2026.01.13_0cefcaea"
+branch_labels: str | Sequence[str] | None = None
+depends_on: str | Sequence[str] | None = None
+
+
+def upgrade() -> None:
+ op.create_table(
+ "revisioncounter",
+ sa.Column("release_name", sa.String(), nullable=False),
+ sa.Column("last_allocated_number", sa.Integer(), nullable=False),
+ sa.PrimaryKeyConstraint("release_name",
name=op.f("pk_revisioncounter")),
+ )
+
+ # Populate from existing releases with last_allocated_number=0
+ # This allows manual verification before switching the allocation logic
+ # The actual MAX(seq) values are to be set in a subsequent migration
+ op.execute("""
+ INSERT INTO revisioncounter (release_name, last_allocated_number)
+ SELECT name, 0
+ FROM release
+ """)
+
+
+def downgrade() -> None:
+ op.drop_table("revisioncounter")
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]