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