Files
hxbooks/migrations/versions/75e81e4ab7b6_initial_migration.py

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 ###