"""changing db bigly Revision ID: d4d3f43ce86a Revises: cc7dd65bcdd9 Create Date: 2025-04-19 13:46:27.330261 """ 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 = 'd4d3f43ce86a' down_revision: Union[str, None] = 'cc7dd65bcdd9' 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('customers', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(), nullable=True), sa.Column('created_at', sa.DateTime(timezone=True), nullable=True), sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_customers_id'), 'customers', ['id'], unique=False) op.create_index(op.f('ix_customers_name'), 'customers', ['name'], unique=True) op.create_table('products', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(), nullable=True), sa.Column('tcgplayer_id', sa.String(), nullable=True), sa.Column('created_at', sa.DateTime(timezone=True), nullable=True), sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True), sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True), sa.PrimaryKeyConstraint('id') ) op.create_table('tcgplayer_inventory', sa.Column('id', sa.Integer(), nullable=False), sa.Column('tcgplayer_id', sa.String(), nullable=True), sa.Column('product_line', sa.String(), nullable=True), sa.Column('set_name', sa.String(), nullable=True), sa.Column('product_name', sa.String(), nullable=True), sa.Column('title', sa.String(), nullable=True), sa.Column('number', sa.String(), nullable=True), sa.Column('rarity', sa.String(), nullable=True), sa.Column('condition', sa.String(), nullable=True), sa.Column('tcg_market_price', sa.Float(), nullable=True), sa.Column('tcg_direct_low', sa.Float(), nullable=True), sa.Column('tcg_low_price_with_shipping', sa.Float(), nullable=True), sa.Column('tcg_low_price', sa.Float(), nullable=True), sa.Column('total_quantity', sa.Integer(), nullable=True), sa.Column('add_to_quantity', sa.Integer(), nullable=True), sa.Column('tcg_marketplace_price', sa.Float(), nullable=True), sa.Column('photo_url', sa.String(), nullable=True), sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=True), sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True), sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_tcgplayer_inventory_id'), 'tcgplayer_inventory', ['id'], unique=False) op.create_index(op.f('ix_tcgplayer_inventory_tcgplayer_id'), 'tcgplayer_inventory', ['tcgplayer_id'], unique=True) op.create_table('vendors', sa.Column('id', sa.Integer(), nullable=False), sa.Column('name', sa.String(), nullable=True), sa.Column('created_at', sa.DateTime(timezone=True), nullable=True), sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True), sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_vendors_id'), 'vendors', ['id'], unique=False) op.create_index(op.f('ix_vendors_name'), 'vendors', ['name'], unique=True) op.create_table('physical_items', sa.Column('id', sa.Integer(), nullable=False), sa.Column('item_type', sa.String(), nullable=True), sa.Column('product_id', sa.Integer(), nullable=False), sa.Column('created_at', sa.DateTime(timezone=True), nullable=True), sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True), sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True), sa.ForeignKeyConstraint(['product_id'], ['products.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('transactions', sa.Column('id', sa.Integer(), nullable=False), sa.Column('vendor_id', sa.Integer(), nullable=True), sa.Column('customer_id', sa.Integer(), nullable=True), sa.Column('transaction_type', sa.String(), nullable=True), sa.Column('transaction_date', sa.DateTime(timezone=True), nullable=True), sa.Column('transaction_total_amount', sa.Float(), nullable=True), sa.Column('transaction_notes', sa.String(), nullable=True), sa.Column('created_at', sa.DateTime(timezone=True), nullable=True), sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True), sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True), sa.ForeignKeyConstraint(['customer_id'], ['customers.id'], ), sa.ForeignKeyConstraint(['vendor_id'], ['vendors.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_transactions_id'), 'transactions', ['id'], unique=False) op.create_table('inventory_items', sa.Column('id', sa.Integer(), nullable=False), sa.Column('physical_item_id', sa.Integer(), nullable=True), sa.Column('cost_basis', sa.Float(), nullable=True), sa.Column('parent_id', sa.Integer(), nullable=True), sa.Column('created_at', sa.DateTime(timezone=True), nullable=True), sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True), sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True), sa.ForeignKeyConstraint(['parent_id'], ['inventory_items.id'], ), sa.ForeignKeyConstraint(['physical_item_id'], ['physical_items.id'], ), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('physical_item_id') ) op.create_index(op.f('ix_inventory_items_id'), 'inventory_items', ['id'], unique=False) op.create_table('sealed_cases', sa.Column('id', sa.Integer(), nullable=False), sa.ForeignKeyConstraint(['id'], ['physical_items.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('transaction_items', sa.Column('id', sa.Integer(), nullable=False), sa.Column('transaction_id', sa.Integer(), nullable=True), sa.Column('physical_item_id', sa.Integer(), nullable=True), sa.Column('unit_price', sa.Float(), nullable=False), sa.Column('created_at', sa.DateTime(timezone=True), nullable=True), sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True), sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True), sa.ForeignKeyConstraint(['physical_item_id'], ['physical_items.id'], ), sa.ForeignKeyConstraint(['transaction_id'], ['transactions.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_transaction_items_id'), 'transaction_items', ['id'], unique=False) op.create_table('sealed_boxes', sa.Column('id', sa.Integer(), nullable=False), sa.Column('case_id', sa.Integer(), nullable=True), sa.ForeignKeyConstraint(['case_id'], ['sealed_cases.id'], ), sa.ForeignKeyConstraint(['id'], ['physical_items.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('open_events', sa.Column('id', sa.Integer(), nullable=False), sa.Column('sealed_case_id', sa.Integer(), nullable=True), sa.Column('sealed_box_id', sa.Integer(), nullable=True), sa.Column('open_date', sa.DateTime(timezone=True), nullable=True), sa.Column('created_at', sa.DateTime(timezone=True), nullable=True), sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True), sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True), sa.ForeignKeyConstraint(['sealed_box_id'], ['sealed_boxes.id'], ), sa.ForeignKeyConstraint(['sealed_case_id'], ['sealed_cases.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_open_events_id'), 'open_events', ['id'], unique=False) op.create_table('open_cards', sa.Column('id', sa.Integer(), nullable=False), sa.Column('open_event_id', sa.Integer(), nullable=True), sa.Column('box_id', sa.Integer(), nullable=True), sa.ForeignKeyConstraint(['box_id'], ['open_boxes.id'], ), sa.ForeignKeyConstraint(['id'], ['physical_items.id'], ), sa.ForeignKeyConstraint(['open_event_id'], ['open_events.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_table('cost_basis', sa.Column('id', sa.Integer(), nullable=False), sa.Column('transaction_item_id', sa.Integer(), nullable=True), sa.Column('sealed_case_id', sa.Integer(), nullable=True), sa.Column('sealed_box_id', sa.Integer(), nullable=True), sa.Column('open_box_id', sa.Integer(), nullable=True), sa.Column('open_card_id', sa.Integer(), nullable=True), sa.Column('quantity', sa.Integer(), nullable=False), sa.Column('unit_cost', sa.Float(), nullable=False), sa.Column('created_at', sa.DateTime(timezone=True), nullable=True), sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True), sa.Column('deleted_at', sa.DateTime(timezone=True), nullable=True), sa.ForeignKeyConstraint(['open_box_id'], ['open_boxes.id'], ), sa.ForeignKeyConstraint(['open_card_id'], ['open_cards.id'], ), sa.ForeignKeyConstraint(['sealed_box_id'], ['sealed_boxes.id'], ), sa.ForeignKeyConstraint(['sealed_case_id'], ['sealed_cases.id'], ), sa.ForeignKeyConstraint(['transaction_item_id'], ['transaction_items.id'], ), sa.PrimaryKeyConstraint('id') ) op.create_index(op.f('ix_cost_basis_id'), 'cost_basis', ['id'], unique=False) # Drop tables in correct dependency order # First drop foreign key constraints op.execute('DROP TABLE IF EXISTS open_cards CASCADE') op.execute('DROP TABLE IF EXISTS cost_basis CASCADE') op.execute('DROP TABLE IF EXISTS open_boxes CASCADE') op.execute('DROP TABLE IF EXISTS boxes CASCADE') op.execute('DROP TABLE IF EXISTS games CASCADE') op.drop_index('ix_inventory_id', table_name='inventory') # ### end Alembic commands ### def downgrade() -> None: """Downgrade schema.""" # ### commands auto generated by Alembic - please adjust! ### # Create tables in correct dependency order op.create_table('games', sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False), sa.Column('name', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('description', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('image_url', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('created_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=True), sa.Column('updated_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True), sa.PrimaryKeyConstraint('id', name='games_pkey') ) op.create_index('ix_games_id', 'games', ['id'], unique=False) op.create_table('boxes', sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False), sa.Column('product_id', sa.INTEGER(), autoincrement=False, nullable=True), sa.Column('type', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('set_code', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('sku', sa.INTEGER(), autoincrement=False, nullable=True), sa.Column('name', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('game_id', sa.INTEGER(), autoincrement=False, nullable=True), sa.Column('expected_number_of_cards', sa.INTEGER(), autoincrement=False, nullable=True), sa.Column('description', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('image_url', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('created_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=True), sa.Column('updated_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True), sa.ForeignKeyConstraint(['game_id'], ['games.id'], name='boxes_game_id_fkey'), sa.PrimaryKeyConstraint('id', name='boxes_pkey') ) op.create_index('ix_boxes_id', 'boxes', ['id'], unique=False) op.create_table('open_boxes', sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False), sa.Column('box_id', sa.INTEGER(), autoincrement=False, nullable=True), sa.Column('date_opened', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True), sa.Column('number_of_cards', sa.INTEGER(), autoincrement=False, nullable=True), sa.Column('created_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=True), sa.Column('updated_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True), sa.ForeignKeyConstraint(['box_id'], ['boxes.id'], name='open_boxes_box_id_fkey'), sa.PrimaryKeyConstraint('id', name='open_boxes_pkey') ) op.create_index('ix_open_boxes_id', 'open_boxes', ['id'], unique=False) op.create_table('open_cards', sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False), sa.Column('box_id', sa.INTEGER(), autoincrement=False, nullable=True), sa.Column('created_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=True), sa.Column('updated_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True), sa.ForeignKeyConstraint(['box_id'], ['open_boxes.id'], name='open_cards_box_id_fkey'), sa.PrimaryKeyConstraint('id', name='open_cards_pkey') ) op.create_index('ix_open_cards_id', 'open_cards', ['id'], unique=False) op.create_table('cost_basis', sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False), sa.Column('open_box_id', sa.INTEGER(), autoincrement=False, nullable=True), sa.Column('created_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=True), sa.Column('updated_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True), sa.ForeignKeyConstraint(['open_box_id'], ['open_boxes.id'], name='cost_basis_open_box_id_fkey'), sa.PrimaryKeyConstraint('id', name='cost_basis_pkey') ) op.create_index('ix_cost_basis_id', 'cost_basis', ['id'], unique=False) op.create_table('cards', sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False), sa.Column('name', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('rarity', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('set_name', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('price', sa.DOUBLE_PRECISION(precision=53), autoincrement=False, nullable=True), sa.Column('quantity', sa.INTEGER(), autoincrement=False, nullable=True), sa.Column('tcgplayer_sku', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('product_line', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('product_name', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('title', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('number', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('condition', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('tcg_market_price', sa.DOUBLE_PRECISION(precision=53), autoincrement=False, nullable=True), sa.Column('tcg_direct_low', sa.DOUBLE_PRECISION(precision=53), autoincrement=False, nullable=True), sa.Column('tcg_low_price_with_shipping', sa.DOUBLE_PRECISION(precision=53), autoincrement=False, nullable=True), sa.Column('tcg_low_price', sa.DOUBLE_PRECISION(precision=53), autoincrement=False, nullable=True), sa.Column('total_quantity', sa.INTEGER(), autoincrement=False, nullable=True), sa.Column('add_to_quantity', sa.INTEGER(), autoincrement=False, nullable=True), sa.Column('tcg_marketplace_price', sa.DOUBLE_PRECISION(precision=53), autoincrement=False, nullable=True), sa.Column('photo_url', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('created_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=True), sa.Column('updated_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True), sa.PrimaryKeyConstraint('id', name='cards_pkey') ) op.create_index('ix_cards_tcgplayer_sku', 'cards', ['tcgplayer_sku'], unique=True) op.create_index('ix_cards_set_name', 'cards', ['set_name'], unique=False) op.create_index('ix_cards_name', 'cards', ['name'], unique=False) op.create_index('ix_cards_id', 'cards', ['id'], unique=False) op.create_table('inventory', sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False), sa.Column('tcgplayer_id', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('product_line', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('set_name', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('product_name', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('title', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('number', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('rarity', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('condition', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('tcg_market_price', sa.DOUBLE_PRECISION(precision=53), autoincrement=False, nullable=True), sa.Column('tcg_direct_low', sa.DOUBLE_PRECISION(precision=53), autoincrement=False, nullable=True), sa.Column('tcg_low_price_with_shipping', sa.DOUBLE_PRECISION(precision=53), autoincrement=False, nullable=True), sa.Column('tcg_low_price', sa.DOUBLE_PRECISION(precision=53), autoincrement=False, nullable=True), sa.Column('total_quantity', sa.INTEGER(), autoincrement=False, nullable=True), sa.Column('add_to_quantity', sa.INTEGER(), autoincrement=False, nullable=True), sa.Column('tcg_marketplace_price', sa.DOUBLE_PRECISION(precision=53), autoincrement=False, nullable=True), sa.Column('photo_url', sa.VARCHAR(), autoincrement=False, nullable=True), sa.Column('created_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=True), sa.Column('updated_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True), sa.PrimaryKeyConstraint('id', name='inventory_pkey') ) op.create_index('ix_inventory_tcgplayer_id', 'inventory', ['tcgplayer_id'], unique=True) op.create_index('ix_inventory_id', 'inventory', ['id'], unique=False) op.drop_index(op.f('ix_cost_basis_id'), table_name='cost_basis') op.drop_table('cost_basis') op.drop_table('open_cards') op.drop_index(op.f('ix_open_events_id'), table_name='open_events') op.drop_table('open_events') op.drop_table('sealed_boxes') op.drop_index(op.f('ix_transaction_items_id'), table_name='transaction_items') op.drop_table('transaction_items') op.drop_table('sealed_cases') op.drop_index(op.f('ix_inventory_items_id'), table_name='inventory_items') op.drop_table('inventory_items') op.drop_index(op.f('ix_transactions_id'), table_name='transactions') op.drop_table('transactions') op.drop_table('physical_items') op.drop_index(op.f('ix_vendors_name'), table_name='vendors') op.drop_index(op.f('ix_vendors_id'), table_name='vendors') op.drop_table('vendors') op.drop_index(op.f('ix_tcgplayer_inventory_tcgplayer_id'), table_name='tcgplayer_inventory') op.drop_index(op.f('ix_tcgplayer_inventory_id'), table_name='tcgplayer_inventory') op.drop_table('tcgplayer_inventory') op.drop_table('products') op.drop_index(op.f('ix_customers_name'), table_name='customers') op.drop_index(op.f('ix_customers_id'), table_name='customers') op.drop_table('customers') # ### end Alembic commands ###