144 lines
4.7 KiB
Python
144 lines
4.7 KiB
Python
"""Initial migration
|
|
|
|
Revision ID: 75e81e4ab7b6
|
|
Revises:
|
|
Create Date: 2026-03-14 22:51:20.059755
|
|
|
|
"""
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision = "75e81e4ab7b6"
|
|
down_revision = None
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade():
|
|
# ### commands auto generated by Alembic - please adjust! ###
|
|
op.create_table(
|
|
"author",
|
|
sa.Column("id", sa.Integer(), nullable=False),
|
|
sa.Column("name", sa.String(length=200), nullable=False),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
op.create_table(
|
|
"genre",
|
|
sa.Column("id", sa.Integer(), nullable=False),
|
|
sa.Column("name", sa.String(length=100), nullable=False),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
op.create_table(
|
|
"user",
|
|
sa.Column("id", sa.Integer(), nullable=False),
|
|
sa.Column("username", sa.String(), nullable=False),
|
|
sa.Column("saved_searches", sa.JSON(), nullable=False),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
op.create_table(
|
|
"book",
|
|
sa.Column("id", sa.Integer(), nullable=False),
|
|
sa.Column("title", sa.String(length=500), nullable=False),
|
|
sa.Column("description", sa.String(), nullable=False),
|
|
sa.Column("first_published", sa.Integer(), nullable=True),
|
|
sa.Column("edition", sa.String(length=200), nullable=False),
|
|
sa.Column("publisher", sa.String(length=200), nullable=False),
|
|
sa.Column("isbn", sa.String(length=20), nullable=False),
|
|
sa.Column("notes", sa.String(), nullable=False),
|
|
sa.Column("added_date", sa.DateTime(), nullable=False),
|
|
sa.Column("bought_date", sa.Date(), nullable=True),
|
|
sa.Column("location_place", sa.String(length=100), nullable=False),
|
|
sa.Column("location_bookshelf", sa.String(length=100), nullable=False),
|
|
sa.Column("location_shelf", sa.Integer(), nullable=True),
|
|
sa.Column("loaned_to", sa.String(length=200), nullable=False),
|
|
sa.Column("loaned_date", sa.Date(), nullable=True),
|
|
sa.Column("owner_id", sa.Integer(), nullable=True),
|
|
sa.ForeignKeyConstraint(
|
|
["owner_id"],
|
|
["user.id"],
|
|
),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
op.create_table(
|
|
"book_author",
|
|
sa.Column("book_id", sa.Integer(), nullable=False),
|
|
sa.Column("author_id", sa.Integer(), nullable=False),
|
|
sa.ForeignKeyConstraint(
|
|
["author_id"],
|
|
["author.id"],
|
|
),
|
|
sa.ForeignKeyConstraint(
|
|
["book_id"],
|
|
["book.id"],
|
|
),
|
|
sa.PrimaryKeyConstraint("book_id", "author_id"),
|
|
)
|
|
op.create_table(
|
|
"book_genre",
|
|
sa.Column("book_id", sa.Integer(), nullable=False),
|
|
sa.Column("genre_id", sa.Integer(), nullable=False),
|
|
sa.ForeignKeyConstraint(
|
|
["book_id"],
|
|
["book.id"],
|
|
),
|
|
sa.ForeignKeyConstraint(
|
|
["genre_id"],
|
|
["genre.id"],
|
|
),
|
|
sa.PrimaryKeyConstraint("book_id", "genre_id"),
|
|
)
|
|
op.create_table(
|
|
"reading",
|
|
sa.Column("id", sa.Integer(), nullable=False),
|
|
sa.Column("start_date", sa.Date(), nullable=False),
|
|
sa.Column("end_date", sa.Date(), nullable=True),
|
|
sa.Column("finished", sa.Boolean(), nullable=False),
|
|
sa.Column("dropped", sa.Boolean(), nullable=False),
|
|
sa.Column("rating", sa.Integer(), nullable=True),
|
|
sa.Column("comments", sa.String(), nullable=False),
|
|
sa.Column("user_id", sa.Integer(), nullable=False),
|
|
sa.Column("book_id", sa.Integer(), nullable=False),
|
|
sa.ForeignKeyConstraint(
|
|
["book_id"],
|
|
["book.id"],
|
|
),
|
|
sa.ForeignKeyConstraint(
|
|
["user_id"],
|
|
["user.id"],
|
|
),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
op.create_table(
|
|
"wishlist",
|
|
sa.Column("id", sa.Integer(), nullable=False),
|
|
sa.Column("wishlisted_date", sa.Date(), nullable=False),
|
|
sa.Column("user_id", sa.Integer(), nullable=False),
|
|
sa.Column("book_id", sa.Integer(), nullable=False),
|
|
sa.ForeignKeyConstraint(
|
|
["book_id"],
|
|
["book.id"],
|
|
),
|
|
sa.ForeignKeyConstraint(
|
|
["user_id"],
|
|
["user.id"],
|
|
),
|
|
sa.PrimaryKeyConstraint("id"),
|
|
)
|
|
# ### end Alembic commands ###
|
|
|
|
|
|
def downgrade():
|
|
# ### commands auto generated by Alembic - please adjust! ###
|
|
op.drop_table("wishlist")
|
|
op.drop_table("reading")
|
|
op.drop_table("book_genre")
|
|
op.drop_table("book_author")
|
|
op.drop_table("book")
|
|
op.drop_table("user")
|
|
op.drop_table("genre")
|
|
op.drop_table("author")
|
|
# ### end Alembic commands ###
|