"""lsso login

Revision ID: d02dd4ffaabc
Revises: 322e44198dd6
Create Date: 2026-01-16 11:19:11.866975

"""
from typing import Sequence, Union

from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision: str = 'd02dd4ffaabc'
down_revision: Union[str, None] = '322e44198dd6'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table('smart_inventory_chat_sessions',
    sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
    sa.Column('chat_session_id', sa.String(length=36), nullable=False),
    sa.Column('company_id', sa.Integer(), nullable=False),
    sa.Column('user_id', sa.Integer(), nullable=False),
    sa.Column('store_id', sa.Integer(), nullable=False),
    sa.Column('branch_id', sa.Integer(), nullable=False),
    sa.Column('chat_name', sa.String(length=100), nullable=True),
    sa.Column('created_at', sa.DateTime(), nullable=True),
    sa.Column('updated_at', sa.DateTime(), nullable=True),
    sa.ForeignKeyConstraint(['branch_id'], ['branches.branch_id'], ondelete='CASCADE'),
    sa.ForeignKeyConstraint(['store_id'], ['stores.store_id'], ondelete='CASCADE'),
    sa.ForeignKeyConstraint(['user_id'], ['users.user_id'], ondelete='CASCADE'),
    sa.PrimaryKeyConstraint('id')
    )
    op.create_index(op.f('ix_smart_inventory_chat_sessions_branch_id'), 'smart_inventory_chat_sessions', ['branch_id'], unique=False)
    op.create_index(op.f('ix_smart_inventory_chat_sessions_chat_session_id'), 'smart_inventory_chat_sessions', ['chat_session_id'], unique=True)
    op.create_index(op.f('ix_smart_inventory_chat_sessions_company_id'), 'smart_inventory_chat_sessions', ['company_id'], unique=False)
    op.create_index(op.f('ix_smart_inventory_chat_sessions_id'), 'smart_inventory_chat_sessions', ['id'], unique=False)
    op.create_index(op.f('ix_smart_inventory_chat_sessions_store_id'), 'smart_inventory_chat_sessions', ['store_id'], unique=False)
    op.create_index(op.f('ix_smart_inventory_chat_sessions_user_id'), 'smart_inventory_chat_sessions', ['user_id'], unique=False)
    op.create_table('smart_inventory_chat_messages',
    sa.Column('id', sa.Integer(), autoincrement=True, nullable=False),
    sa.Column('session_id', sa.Integer(), nullable=False),
    sa.Column('role', sa.String(length=20), nullable=False),
    sa.Column('content', sa.Text(), nullable=False),
    sa.Column('created_at', sa.DateTime(), nullable=True),
    sa.ForeignKeyConstraint(['session_id'], ['smart_inventory_chat_sessions.id'], ondelete='CASCADE'),
    sa.PrimaryKeyConstraint('id')
    )
    op.create_index(op.f('ix_smart_inventory_chat_messages_id'), 'smart_inventory_chat_messages', ['id'], unique=False)
    op.create_index(op.f('ix_smart_inventory_chat_messages_session_id'), 'smart_inventory_chat_messages', ['session_id'], unique=False)
    op.add_column('users', sa.Column('company_id', sa.Integer(), nullable=True))
    op.create_foreign_key(None, 'users', 'companies', ['company_id'], ['id'])
    # ### end Alembic commands ###


def downgrade() -> None:
    # ### commands auto generated by Alembic - please adjust! ###
    op.drop_constraint(None, 'users', type_='foreignkey')
    op.drop_column('users', 'company_id')
    op.drop_index(op.f('ix_smart_inventory_chat_messages_session_id'), table_name='smart_inventory_chat_messages')
    op.drop_index(op.f('ix_smart_inventory_chat_messages_id'), table_name='smart_inventory_chat_messages')
    op.drop_table('smart_inventory_chat_messages')
    op.drop_index(op.f('ix_smart_inventory_chat_sessions_user_id'), table_name='smart_inventory_chat_sessions')
    op.drop_index(op.f('ix_smart_inventory_chat_sessions_store_id'), table_name='smart_inventory_chat_sessions')
    op.drop_index(op.f('ix_smart_inventory_chat_sessions_id'), table_name='smart_inventory_chat_sessions')
    op.drop_index(op.f('ix_smart_inventory_chat_sessions_company_id'), table_name='smart_inventory_chat_sessions')
    op.drop_index(op.f('ix_smart_inventory_chat_sessions_chat_session_id'), table_name='smart_inventory_chat_sessions')
    op.drop_index(op.f('ix_smart_inventory_chat_sessions_branch_id'), table_name='smart_inventory_chat_sessions')
    op.drop_table('smart_inventory_chat_sessions')
    # ### end Alembic commands ###
