Skip to content

Commit f61a1b7

Browse files
Generate migrations
1 parent 23cc528 commit f61a1b7

1 file changed

Lines changed: 78 additions & 0 deletions

File tree

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
"""Backend/feature: Add dismissable dashboard reminders
2+
3+
Revision ID: 0149
4+
Revises: 0148
5+
Create Date: 2026-05-10 02:06:58.881909
6+
7+
"""
8+
9+
import sqlalchemy as sa
10+
from alembic import op
11+
12+
# revision identifiers, used by Alembic.
13+
revision = "0149"
14+
down_revision = "0148"
15+
branch_labels = None
16+
depends_on = None
17+
18+
19+
def upgrade() -> None:
20+
op.create_table(
21+
"reminder_dismissals",
22+
sa.Column("id", sa.BigInteger(), nullable=False),
23+
sa.Column("user_id", sa.BigInteger(), nullable=False),
24+
sa.Column(
25+
"reminder_type",
26+
sa.Enum(
27+
"complete_profile",
28+
"complete_verification",
29+
"respond_to_host_request",
30+
"write_reference",
31+
name="remindertype",
32+
),
33+
nullable=False,
34+
),
35+
sa.Column("host_request_id", sa.BigInteger(), nullable=True),
36+
sa.Column("dismissed_at", sa.DateTime(timezone=True), server_default=sa.text("now()"), nullable=False),
37+
sa.CheckConstraint(
38+
"(reminder_type IN ('complete_profile', 'complete_verification') AND host_request_id IS NULL) OR (reminder_type IN ('respond_to_host_request', 'write_reference') AND host_request_id IS NOT NULL)",
39+
name=op.f("ck_reminder_dismissals_entity_consistency"),
40+
),
41+
sa.ForeignKeyConstraint(
42+
["host_request_id"], ["host_requests.id"], name=op.f("fk_reminder_dismissals_host_request_id_host_requests")
43+
),
44+
sa.ForeignKeyConstraint(["user_id"], ["users.id"], name=op.f("fk_reminder_dismissals_user_id_users")),
45+
sa.PrimaryKeyConstraint("id", name=op.f("pk_reminder_dismissals")),
46+
)
47+
op.create_index(
48+
"ix_reminder_dismissals_entity_unique",
49+
"reminder_dismissals",
50+
["user_id", "reminder_type", "host_request_id"],
51+
unique=True,
52+
postgresql_where=sa.text("host_request_id IS NOT NULL"),
53+
)
54+
op.create_index(
55+
"ix_reminder_dismissals_global_unique",
56+
"reminder_dismissals",
57+
["user_id", "reminder_type"],
58+
unique=True,
59+
postgresql_where=sa.text("host_request_id IS NULL"),
60+
)
61+
op.create_index(
62+
"ix_reminder_dismissals_user_type", "reminder_dismissals", ["user_id", "reminder_type"], unique=False
63+
)
64+
65+
66+
def downgrade() -> None:
67+
op.drop_index("ix_reminder_dismissals_user_type", table_name="reminder_dismissals")
68+
op.drop_index(
69+
"ix_reminder_dismissals_global_unique",
70+
table_name="reminder_dismissals",
71+
postgresql_where=sa.text("host_request_id IS NULL"),
72+
)
73+
op.drop_index(
74+
"ix_reminder_dismissals_entity_unique",
75+
table_name="reminder_dismissals",
76+
postgresql_where=sa.text("host_request_id IS NOT NULL"),
77+
)
78+
op.drop_table("reminder_dismissals")

0 commit comments

Comments
 (0)