Init project

This commit is contained in:
2026-01-15 09:47:43 +03:00
commit 3e515c66ec
59 changed files with 5101 additions and 0 deletions

View File

@@ -0,0 +1,99 @@
"""init
Revision ID: c1060d90df61
Revises:
Create Date: 2026-01-13 10:06:43.435312
"""
from typing import Sequence, Union
import sqlalchemy as sa
import sqlmodel
from alembic import op
# revision identifiers, used by Alembic.
revision: str = "c1060d90df61"
down_revision: Union[str, Sequence[str], None] = None
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
"""Upgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.create_table("users",
sa.Column("id", sa.Uuid(), nullable=False),
sa.Column("name", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
sa.Column("birthday", sa.Date(), nullable=True),
sa.Column("phone", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
sa.Column("telegram_id", sa.Integer(), nullable=True),
sa.Column("gift_payment_data", sa.JSON(), nullable=True),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("id"),
sa.UniqueConstraint("phone", name="uq__users__phone"),
sa.UniqueConstraint("telegram_id", name="uq__users__telegram_id",)
)
op.create_index("ix__users__phone", "users", ["phone"], unique=False)
op.create_index("ix__users__telegram_id", "users", ["telegram_id"], unique=False)
op.create_table("pools",
sa.Column("id", sa.Uuid(), nullable=False),
sa.Column("owner_id", sa.Uuid(), nullable=False),
sa.Column("birthday_user_id", sa.Uuid(), nullable=False),
sa.Column("description", sqlmodel.sql.sqltypes.AutoString(), nullable=True),
sa.Column("payment_data", sa.JSON(), nullable=False),
sa.CheckConstraint(
"owner_id <> birthday_user_id",
name="ck__pools__owner_not_birthday_user",
),
sa.ForeignKeyConstraint(["birthday_user_id"], ["users.id"]),
sa.ForeignKeyConstraint(["owner_id"], ["users.id"]),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("id"),
)
op.create_index("ix__pools__birthday_user_id", "pools", ["birthday_user_id"], unique=False)
op.create_index("ix__pools__owner_id", "pools", ["owner_id"], unique=False)
op.create_table("subscriptions",
sa.Column("from_user_id", sa.Uuid(), nullable=False),
sa.Column("to_user_id", sa.Uuid(), nullable=False),
sa.Column("name", sqlmodel.sql.sqltypes.AutoString(), nullable=False),
sa.Column("pool_id", sa.Uuid(), nullable=True),
sa.CheckConstraint(
"from_user_id <> to_user_id",
name="ck__subscriptions__from_user_not_to_user",
),
sa.ForeignKeyConstraint(["from_user_id"], ["users.id"]),
sa.ForeignKeyConstraint(["pool_id"], ["pools.id"], ondelete="SET NULL"),
sa.ForeignKeyConstraint(["to_user_id"], ["users.id"]),
sa.PrimaryKeyConstraint("from_user_id", "to_user_id"),
sa.UniqueConstraint("from_user_id", "to_user_id", name="uq__subscriptions__from_to_user"),
)
op.create_index("ix__subscriptions__from_user_id", "subscriptions", ["from_user_id"], unique=False)
op.create_index(
"ix__subscriptions__from_user_id__to_user_id",
"subscriptions",
["from_user_id", "to_user_id"],
unique=False,
)
op.create_index("ix__subscriptions__name", "subscriptions", ["name"], unique=False)
op.create_index("ix__subscriptions__pool_id", "subscriptions", ["pool_id"], unique=False)
op.create_index("ix__subscriptions__to_user_id", "subscriptions", ["to_user_id"], unique=False)
# ### end Alembic commands ###
def downgrade() -> None:
"""Downgrade schema."""
# ### commands auto generated by Alembic - please adjust! ###
op.drop_index("ix__subscriptions__to_user_id", table_name="subscriptions")
op.drop_index("ix__subscriptions__pool_id", table_name="subscriptions")
op.drop_index("ix__subscriptions__name", table_name="subscriptions")
op.drop_index("ix__subscriptions__from_user_id__to_user_id", table_name="subscriptions")
op.drop_index("ix__subscriptions__from_user_id", table_name="subscriptions")
op.drop_table("subscriptions")
op.drop_index("ix__pools__owner_id", table_name="pools")
op.drop_index("ix__pools__birthday_user_id", table_name="pools")
op.drop_table("pools")
op.drop_index("ix__users__telegram_id", table_name="users")
op.drop_index("ix__users__phone", table_name="users")
op.drop_table("users")
# ### end Alembic commands ###