102 lines
3.0 KiB
Python
102 lines
3.0 KiB
Python
"""Initial Migration
|
|
|
|
Revision ID: ad794cb94d9c
|
|
Revises:
|
|
Create Date: 2026-01-30 21:38:15.534474
|
|
|
|
"""
|
|
|
|
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
from sqlalchemy.dialects import postgresql
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision: str = "ad794cb94d9c"
|
|
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(
|
|
"categories",
|
|
sa.Column("id", sa.Integer(), autoincrement=True, nullable=False),
|
|
sa.Column("name", sa.Text(), nullable=True),
|
|
sa.Column("parent_id", sa.Integer(), nullable=True),
|
|
sa.ForeignKeyConstraint(
|
|
["parent_id"],
|
|
["categories.id"],
|
|
),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
op.create_table(
|
|
"orders",
|
|
sa.Column("id", sa.Integer(), autoincrement=True, nullable=False),
|
|
sa.Column("customer", sa.BigInteger(), nullable=True),
|
|
sa.Column(
|
|
"status",
|
|
postgresql.ENUM(
|
|
"CREATED",
|
|
"PAID",
|
|
"IN_PROGRESS",
|
|
"CANCELLED",
|
|
"DRAFT",
|
|
name="order_status",
|
|
),
|
|
nullable=False,
|
|
),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
op.create_table(
|
|
"products",
|
|
sa.Column("id", sa.Integer(), autoincrement=True, nullable=False),
|
|
sa.Column("category_id", sa.Integer(), nullable=True),
|
|
sa.Column("name", sa.Text(), nullable=True),
|
|
sa.Column("description", sa.Text(), nullable=True),
|
|
sa.Column("search_vector", postgresql.TSVECTOR(), nullable=False),
|
|
sa.ForeignKeyConstraint(
|
|
["category_id"],
|
|
["categories.id"],
|
|
),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
op.create_index(
|
|
"idx_products_search",
|
|
"products",
|
|
["search_vector"],
|
|
unique=False,
|
|
postgresql_using="gin",
|
|
)
|
|
op.create_table(
|
|
"order_items",
|
|
sa.Column("id", sa.Integer(), autoincrement=True, nullable=False),
|
|
sa.Column("order_id", sa.Integer(), nullable=False),
|
|
sa.Column("product_id", sa.Integer(), nullable=False),
|
|
sa.Column("quantity", sa.Integer(), nullable=False),
|
|
sa.ForeignKeyConstraint(
|
|
["order_id"],
|
|
["orders.id"],
|
|
),
|
|
sa.ForeignKeyConstraint(
|
|
["product_id"],
|
|
["products.id"],
|
|
),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
# ### end Alembic commands ###
|
|
|
|
|
|
def downgrade() -> None:
|
|
"""Downgrade schema."""
|
|
# ### commands auto generated by Alembic - please adjust! ###
|
|
op.drop_table("order_items")
|
|
op.drop_index("idx_products_search", table_name="products", postgresql_using="gin")
|
|
op.drop_table("products")
|
|
op.drop_table("orders")
|
|
op.drop_table("categories")
|
|
# ### end Alembic commands ###
|