"""Initial migration Revision ID: aaa1bc2a6d3c Revises: Create Date: 2023-11-16 12:00:00.000000 """ import sqlalchemy as sa from alembic import op # revision identifiers, used by Alembic. revision = 'aaa1bc2a6d3c' down_revision = None branch_labels = None depends_on = None def upgrade(): # Create user table op.create_table( 'user', sa.Column('id', sa.String(), primary_key=True, index=True), sa.Column('email', sa.String(), nullable=False, unique=True, index=True), sa.Column('full_name', sa.String(), nullable=True), sa.Column('hashed_password', sa.String(), nullable=False), sa.Column('is_active', sa.Boolean(), default=True), sa.Column('is_superuser', sa.Boolean(), default=False), sa.Column('created_at', sa.DateTime(), default=sa.func.current_timestamp()), sa.Column( 'updated_at', sa.DateTime(), default=sa.func.current_timestamp(), onupdate=sa.func.current_timestamp() ), ) # Create category table op.create_table( 'category', sa.Column('id', sa.String(), primary_key=True, index=True), sa.Column('name', sa.String(), nullable=False, index=True), sa.Column('description', sa.String(), nullable=True), sa.Column('created_at', sa.DateTime(), default=sa.func.current_timestamp()), sa.Column( 'updated_at', sa.DateTime(), default=sa.func.current_timestamp(), onupdate=sa.func.current_timestamp() ), ) # Create supplier table op.create_table( 'supplier', sa.Column('id', sa.String(), primary_key=True, index=True), sa.Column('name', sa.String(), nullable=False, index=True), sa.Column('contact_name', sa.String(), nullable=True), sa.Column('email', sa.String(), nullable=True), sa.Column('phone', sa.String(), nullable=True), sa.Column('address', sa.String(), nullable=True), sa.Column('notes', sa.String(), nullable=True), sa.Column('created_at', sa.DateTime(), default=sa.func.current_timestamp()), sa.Column( 'updated_at', sa.DateTime(), default=sa.func.current_timestamp(), onupdate=sa.func.current_timestamp() ), ) # Create product table op.create_table( 'product', sa.Column('id', sa.String(), primary_key=True, index=True), sa.Column('name', sa.String(), nullable=False, index=True), sa.Column('description', sa.String(), nullable=True), sa.Column('sku', sa.String(), nullable=False, unique=True, index=True), sa.Column('price', sa.Float(), nullable=False), sa.Column('cost', sa.Float(), nullable=False), sa.Column('quantity', sa.Integer(), default=0), sa.Column('reorder_level', sa.Integer(), default=10), sa.Column('category_id', sa.String(), sa.ForeignKey('category.id'), nullable=True), sa.Column('supplier_id', sa.String(), sa.ForeignKey('supplier.id'), nullable=True), sa.Column('owner_id', sa.String(), sa.ForeignKey('user.id'), nullable=False), sa.Column('created_at', sa.DateTime(), default=sa.func.current_timestamp()), sa.Column( 'updated_at', sa.DateTime(), default=sa.func.current_timestamp(), onupdate=sa.func.current_timestamp() ), ) # Create inventory_transaction table op.create_table( 'inventorytransaction', sa.Column('id', sa.String(), primary_key=True, index=True), sa.Column('transaction_type', sa.String(), nullable=False), sa.Column('quantity', sa.Integer(), nullable=False), sa.Column('transaction_date', sa.DateTime(), default=sa.func.current_timestamp()), sa.Column('notes', sa.String(), nullable=True), sa.Column('unit_price', sa.Float(), nullable=True), sa.Column('reference_number', sa.String(), nullable=True), sa.Column('product_id', sa.String(), sa.ForeignKey('product.id'), nullable=False), sa.Column('created_at', sa.DateTime(), default=sa.func.current_timestamp()), ) def downgrade(): op.drop_table('inventorytransaction') op.drop_table('product') op.drop_table('supplier') op.drop_table('category') op.drop_table('user')