Spaces:
Sleeping
Sleeping
| """sync users table | |
| Revision ID: 12d5dfb6fd16 | |
| Revises: 39d22a91999a | |
| Create Date: 2025-10-01 21:25:39.871657 | |
| """ | |
| from alembic import op | |
| import sqlalchemy as sa | |
| # revision identifiers, used by Alembic. | |
| revision = '12d5dfb6fd16' | |
| down_revision = '39d22a91999a' | |
| branch_labels = None | |
| depends_on = None | |
| def upgrade(): | |
| # ### commands auto generated by Alembic - please adjust! ### | |
| op.create_table('chat_messages', | |
| sa.Column('id', sa.Integer(), nullable=False), | |
| sa.Column('user_id', sa.Integer(), nullable=False), | |
| sa.Column('learning_path_id', sa.String(length=36), nullable=True), | |
| sa.Column('message', sa.Text(), nullable=False), | |
| sa.Column('role', sa.String(length=20), nullable=False), | |
| sa.Column('intent', sa.String(length=50), nullable=True), | |
| sa.Column('entities', sa.JSON(), nullable=True), | |
| sa.Column('timestamp', sa.DateTime(), nullable=True), | |
| sa.Column('tokens_used', sa.Integer(), nullable=True), | |
| sa.Column('response_time_ms', sa.Integer(), nullable=True), | |
| sa.Column('session_id', sa.String(length=36), nullable=True), | |
| sa.ForeignKeyConstraint(['learning_path_id'], ['user_learning_paths.id'], ), | |
| sa.ForeignKeyConstraint(['user_id'], ['users.id'], ), | |
| sa.PrimaryKeyConstraint('id') | |
| ) | |
| with op.batch_alter_table('chat_messages', schema=None) as batch_op: | |
| batch_op.create_index(batch_op.f('ix_chat_messages_session_id'), ['session_id'], unique=False) | |
| batch_op.create_index(batch_op.f('ix_chat_messages_timestamp'), ['timestamp'], unique=False) | |
| op.create_table('conversation_sessions', | |
| sa.Column('id', sa.String(length=36), nullable=False), | |
| sa.Column('user_id', sa.Integer(), nullable=False), | |
| sa.Column('learning_path_id', sa.String(length=36), nullable=True), | |
| sa.Column('started_at', sa.DateTime(), nullable=True), | |
| sa.Column('last_activity_at', sa.DateTime(), nullable=True), | |
| sa.Column('ended_at', sa.DateTime(), nullable=True), | |
| sa.Column('summary', sa.Text(), nullable=True), | |
| sa.Column('message_count', sa.Integer(), nullable=True), | |
| sa.Column('total_tokens_used', sa.Integer(), nullable=True), | |
| sa.Column('is_active', sa.Boolean(), nullable=True), | |
| sa.ForeignKeyConstraint(['learning_path_id'], ['user_learning_paths.id'], ), | |
| sa.ForeignKeyConstraint(['user_id'], ['users.id'], ), | |
| sa.PrimaryKeyConstraint('id') | |
| ) | |
| with op.batch_alter_table('conversation_sessions', schema=None) as batch_op: | |
| batch_op.create_index(batch_op.f('ix_conversation_sessions_started_at'), ['started_at'], unique=False) | |
| op.create_table('path_modifications', | |
| sa.Column('id', sa.Integer(), nullable=False), | |
| sa.Column('learning_path_id', sa.String(length=36), nullable=False), | |
| sa.Column('user_id', sa.Integer(), nullable=False), | |
| sa.Column('chat_message_id', sa.Integer(), nullable=True), | |
| sa.Column('modification_type', sa.String(length=50), nullable=False), | |
| sa.Column('target_path', sa.String(length=200), nullable=True), | |
| sa.Column('change_description', sa.Text(), nullable=False), | |
| sa.Column('old_value', sa.JSON(), nullable=True), | |
| sa.Column('new_value', sa.JSON(), nullable=True), | |
| sa.Column('timestamp', sa.DateTime(), nullable=True), | |
| sa.Column('is_reverted', sa.Boolean(), nullable=True), | |
| sa.ForeignKeyConstraint(['chat_message_id'], ['chat_messages.id'], ), | |
| sa.ForeignKeyConstraint(['learning_path_id'], ['user_learning_paths.id'], ), | |
| sa.ForeignKeyConstraint(['user_id'], ['users.id'], ), | |
| sa.PrimaryKeyConstraint('id') | |
| ) | |
| with op.batch_alter_table('path_modifications', schema=None) as batch_op: | |
| batch_op.create_index(batch_op.f('ix_path_modifications_timestamp'), ['timestamp'], unique=False) | |
| with op.batch_alter_table('users', schema=None) as batch_op: | |
| batch_op.add_column(sa.Column('last_seen', sa.DateTime(), nullable=True)) | |
| batch_op.add_column(sa.Column('registration_source', sa.String(length=20), nullable=True)) | |
| batch_op.add_column(sa.Column('login_count', sa.Integer(), nullable=True)) | |
| batch_op.add_column(sa.Column('display_name', sa.String(length=100), nullable=True)) | |
| batch_op.add_column(sa.Column('bio', sa.Text(), nullable=True)) | |
| # ### end Alembic commands ### | |
| def downgrade(): | |
| # ### commands auto generated by Alembic - please adjust! ### | |
| with op.batch_alter_table('users', schema=None) as batch_op: | |
| batch_op.drop_column('bio') | |
| batch_op.drop_column('display_name') | |
| batch_op.drop_column('login_count') | |
| batch_op.drop_column('registration_source') | |
| batch_op.drop_column('last_seen') | |
| with op.batch_alter_table('path_modifications', schema=None) as batch_op: | |
| batch_op.drop_index(batch_op.f('ix_path_modifications_timestamp')) | |
| op.drop_table('path_modifications') | |
| with op.batch_alter_table('conversation_sessions', schema=None) as batch_op: | |
| batch_op.drop_index(batch_op.f('ix_conversation_sessions_started_at')) | |
| op.drop_table('conversation_sessions') | |
| with op.batch_alter_table('chat_messages', schema=None) as batch_op: | |
| batch_op.drop_index(batch_op.f('ix_chat_messages_timestamp')) | |
| batch_op.drop_index(batch_op.f('ix_chat_messages_session_id')) | |
| op.drop_table('chat_messages') | |
| # ### end Alembic commands ### | |