gabriel / musehub public
0009_pr_number.py python
54 lines 1.4 KB
Raw
sha256:a10adeeb7a0169cb9900f9806ed7a973047258abb6283724fe55e8eb68ff3f0a init: musehub initial commit Human 171 days ago
1 """Add pr_number sequential integer to proposals.
2
3 Each proposal now gets a per-repository sequential integer (pr_number) in
4 addition to its UUID primary key, mirroring idiomatic proposal numbering. The
5 combination (repo_id, pr_number) is unique and indexed for fast lookup.
6
7 Revision ID: 0009
8 Revises: 0008
9 """
10 from __future__ import annotations
11
12 from alembic import op
13 import sqlalchemy as sa
14
15 revision: str = "0009"
16 down_revision: str = "0008"
17 branch_labels = None
18 depends_on = None
19
20
21 def upgrade() -> None:
22 op.add_column(
23 "musehub_pull_requests",
24 sa.Column("pr_number", sa.Integer(), nullable=False, server_default="0"),
25 )
26 op.create_index(
27 "ix_musehub_pull_requests_repo_pr_number",
28 "musehub_pull_requests",
29 ["repo_id", "pr_number"],
30 )
31 op.create_unique_constraint(
32 "uq_musehub_pull_requests_repo_pr_number",
33 "musehub_pull_requests",
34 ["repo_id", "pr_number"],
35 )
36 # Remove the temporary server_default now that the column exists.
37 op.alter_column(
38 "musehub_pull_requests",
39 "pr_number",
40 server_default=None,
41 )
42
43
44 def downgrade() -> None:
45 op.drop_constraint(
46 "uq_musehub_pull_requests_repo_pr_number",
47 "musehub_pull_requests",
48 type_="unique",
49 )
50 op.drop_index(
51 "ix_musehub_pull_requests_repo_pr_number",
52 table_name="musehub_pull_requests",
53 )
54 op.drop_column("musehub_pull_requests", "pr_number")
File History 1 commit
sha256:a10adeeb7a0169cb9900f9806ed7a973047258abb6283724fe55e8eb68ff3f0a init: musehub initial commit Human 171 days ago