aboutsummaryrefslogtreecommitdiff
path: root/alembic/versions/c0c4d0fbcee2_init_database.py
diff options
context:
space:
mode:
Diffstat (limited to 'alembic/versions/c0c4d0fbcee2_init_database.py')
-rw-r--r--alembic/versions/c0c4d0fbcee2_init_database.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/alembic/versions/c0c4d0fbcee2_init_database.py b/alembic/versions/c0c4d0fbcee2_init_database.py
new file mode 100644
index 0000000..8f61846
--- /dev/null
+++ b/alembic/versions/c0c4d0fbcee2_init_database.py
@@ -0,0 +1,77 @@
1"""init database
2
3Revision ID: c0c4d0fbcee2
4Revises:
5Create Date: 2026-03-23 21:19:28.195907
6
7"""
8
9from typing import Sequence, Union
10
11import sqlalchemy as sa
12
13from alembic import op
14
15# revision identifiers, used by Alembic.
16revision: str = "c0c4d0fbcee2"
17down_revision: Union[str, Sequence[str], None] = None
18branch_labels: Union[str, Sequence[str], None] = None
19depends_on: Union[str, Sequence[str], None] = None
20
21
22def upgrade() -> None:
23 """Upgrade schema."""
24 # ### commands auto generated by Alembic - please adjust! ###
25 op.create_table(
26 "announcement",
27 sa.Column("id", sa.Integer(), autoincrement=True, nullable=False),
28 sa.Column("message", sa.JSON(), nullable=False),
29 sa.Column("datetime", sa.DateTime(), nullable=False),
30 sa.PrimaryKeyConstraint("id", name=op.f("pk_announcement")),
31 )
32 op.create_table(
33 "invoice",
34 sa.Column("id", sa.Integer(), autoincrement=True, nullable=False),
35 sa.Column("message", sa.JSON(), nullable=False),
36 sa.Column("datetime", sa.DateTime(), nullable=False),
37 sa.PrimaryKeyConstraint("id", name=op.f("pk_invoice")),
38 )
39 op.create_table(
40 "user",
41 sa.Column("id", sa.Integer(), autoincrement=False, nullable=False),
42 sa.Column("role", sa.Enum("REGULAR", "ADMIN", name="userrole"), nullable=False),
43 sa.Column("vpn_link", sa.String(), nullable=False),
44 sa.Column("datetime", sa.DateTime(), nullable=False),
45 sa.PrimaryKeyConstraint("id", name=op.f("pk_user")),
46 )
47 op.create_table(
48 "payment",
49 sa.Column("id", sa.Integer(), autoincrement=True, nullable=False),
50 sa.Column("user_id", sa.Integer(), nullable=False),
51 sa.Column("invoice_id", sa.Integer(), nullable=False),
52 sa.Column("receipt_file", sa.JSON(), nullable=False),
53 sa.Column(
54 "status",
55 sa.Enum("PENDING", "ACCEPTED", "REJECTED", name="paymentstatus"),
56 nullable=False,
57 ),
58 sa.Column("datetime", sa.DateTime(), nullable=False),
59 sa.ForeignKeyConstraint(
60 ["invoice_id"], ["invoice.id"], name=op.f("fk_payment_invoice_id_invoice")
61 ),
62 sa.ForeignKeyConstraint(
63 ["user_id"], ["user.id"], name=op.f("fk_payment_user_id_user")
64 ),
65 sa.PrimaryKeyConstraint("id", name=op.f("pk_payment")),
66 )
67 # ### end Alembic commands ###
68
69
70def downgrade() -> None:
71 """Downgrade schema."""
72 # ### commands auto generated by Alembic - please adjust! ###
73 op.drop_table("payment")
74 op.drop_table("user")
75 op.drop_table("invoice")
76 op.drop_table("announcement")
77 # ### end Alembic commands ###