Files
docqube_backend/alembic/versions/49c19df2c1d4_sync_models.py
T
2026-09-08 11:00:05 +05:30

372 lines
22 KiB
Python

"""sync_models
Revision ID: 49c19df2c1d4
Revises: 29c02cb50737
Create Date: 2026-02-19 11:21:56.538569
"""
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 = '49c19df2c1d4'
down_revision: Union[str, None] = '29c02cb50737'
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('drive_acls',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('resource_type', sa.String(length=20), nullable=False),
sa.Column('resource_id', sa.Integer(), nullable=False),
sa.Column('subject_id', sa.Integer(), nullable=False),
sa.Column('role', sa.String(length=50), nullable=True),
sa.Column('actor_id', sa.Integer(), nullable=True),
sa.Column('created_at', sa.TIMESTAMP(), nullable=True),
sa.PrimaryKeyConstraint('id')
)
op.create_table('chatbot_documents',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('document_id', sa.UUID(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('drive_file_id', sa.Integer(), nullable=True),
sa.Column('filename', sa.String(), nullable=False),
sa.Column('file_path', sa.String(), nullable=True),
sa.Column('cloud_url', sa.String(), nullable=True),
sa.Column('chunks_count', sa.Integer(), nullable=True),
sa.Column('created_at', sa.TIMESTAMP(), nullable=True),
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_index(op.f('ix_chatbot_documents_document_id'), 'chatbot_documents', ['document_id'], unique=True)
op.create_index(op.f('ix_chatbot_documents_drive_file_id'), 'chatbot_documents', ['drive_file_id'], unique=False)
op.create_index(op.f('ix_chatbot_documents_id'), 'chatbot_documents', ['id'], unique=False)
op.create_index(op.f('ix_chatbot_documents_user_id'), 'chatbot_documents', ['user_id'], unique=False)
op.create_table('vector_chunks',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('document_id', sa.String(), nullable=True),
sa.Column('chunk_text', sa.String(), nullable=False),
sa.Column('chunk_index', sa.Integer(), nullable=True),
sa.Column('created_at', sa.TIMESTAMP(), nullable=True),
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_index(op.f('ix_vector_chunks_document_id'), 'vector_chunks', ['document_id'], unique=False)
op.create_index(op.f('ix_vector_chunks_id'), 'vector_chunks', ['id'], unique=False)
op.create_index(op.f('ix_vector_chunks_user_id'), 'vector_chunks', ['user_id'], unique=False)
op.create_table('vector_indices',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('user_id', sa.Integer(), nullable=False),
sa.Column('index_data', sa.LargeBinary(), nullable=True),
sa.Column('dimension', sa.Integer(), nullable=True),
sa.Column('total_vectors', sa.Integer(), nullable=True),
sa.Column('updated_at', sa.TIMESTAMP(), nullable=True),
sa.ForeignKeyConstraint(['user_id'], ['users.id'], ),
sa.PrimaryKeyConstraint('id')
)
op.create_index(op.f('ix_vector_indices_id'), 'vector_indices', ['id'], unique=False)
op.create_index(op.f('ix_vector_indices_user_id'), 'vector_indices', ['user_id'], unique=True)
op.drop_table('drive_acl')
op.alter_column('drive_activities', 'resource_type',
existing_type=sa.VARCHAR(length=10),
type_=sa.String(length=20),
nullable=True)
op.alter_column('drive_activities', 'resource_id',
existing_type=sa.INTEGER(),
nullable=True)
op.alter_column('drive_activities', 'actor_id',
existing_type=sa.INTEGER(),
nullable=True)
op.alter_column('drive_activities', 'activity_type',
existing_type=sa.VARCHAR(length=50),
nullable=True)
op.alter_column('drive_activities', 'created_at',
existing_type=postgresql.TIMESTAMP(timezone=True),
type_=sa.TIMESTAMP(),
nullable=True,
existing_server_default=sa.text('now()'))
op.drop_constraint(op.f('drive_activities_actor_id_fkey'), 'drive_activities', type_='foreignkey')
op.create_foreign_key(None, 'drive_activities', 'users', ['actor_id'], ['id'])
op.drop_column('drive_activities', 'device_info')
op.drop_column('drive_activities', 'ip_address')
op.add_column('drive_comments', sa.Column('user_id', sa.Integer(), nullable=False))
op.add_column('drive_comments', sa.Column('content', sa.Text(), nullable=False))
op.alter_column('drive_comments', 'created_at',
existing_type=postgresql.TIMESTAMP(timezone=True),
type_=sa.TIMESTAMP(),
nullable=True,
existing_server_default=sa.text('now()'))
op.drop_constraint(op.f('drive_comments_file_id_fkey'), 'drive_comments', type_='foreignkey')
op.drop_constraint(op.f('drive_comments_author_id_fkey'), 'drive_comments', type_='foreignkey')
op.create_foreign_key(None, 'drive_comments', 'users', ['user_id'], ['id'])
op.create_foreign_key(None, 'drive_comments', 'drive_files', ['file_id'], ['id'])
op.drop_column('drive_comments', 'anchor')
op.drop_column('drive_comments', 'body')
op.drop_column('drive_comments', 'resolved_at')
op.drop_column('drive_comments', 'author_id')
op.add_column('drive_file_versions', sa.Column('s3_key', sa.String(), nullable=True))
op.add_column('drive_file_versions', sa.Column('content_type', sa.String(), nullable=True))
op.add_column('drive_file_versions', sa.Column('uploader_id', sa.Integer(), nullable=True))
op.alter_column('drive_file_versions', 'file_id',
existing_type=sa.INTEGER(),
nullable=True)
op.alter_column('drive_file_versions', 'version_number',
existing_type=sa.INTEGER(),
nullable=True)
op.alter_column('drive_file_versions', 'size',
existing_type=sa.BIGINT(),
nullable=True)
op.alter_column('drive_file_versions', 'created_at',
existing_type=postgresql.TIMESTAMP(timezone=True),
type_=sa.TIMESTAMP(),
nullable=True,
existing_server_default=sa.text('now()'))
op.drop_constraint(op.f('drive_file_versions_file_id_fkey'), 'drive_file_versions', type_='foreignkey')
op.drop_constraint(op.f('drive_file_versions_created_by_id_fkey'), 'drive_file_versions', type_='foreignkey')
op.create_foreign_key(None, 'drive_file_versions', 'drive_files', ['file_id'], ['id'])
op.create_foreign_key(None, 'drive_file_versions', 'users', ['uploader_id'], ['id'])
op.drop_column('drive_file_versions', 'checksum')
op.drop_column('drive_file_versions', 'created_by_id')
op.drop_column('drive_file_versions', 'storage_key')
op.drop_column('drive_file_versions', 'mime_type')
op.alter_column('drive_stars', 'user_id',
existing_type=sa.INTEGER(),
nullable=True)
op.alter_column('drive_stars', 'resource_type',
existing_type=sa.VARCHAR(length=10),
nullable=True)
op.alter_column('drive_stars', 'resource_id',
existing_type=sa.INTEGER(),
nullable=True)
op.drop_constraint(op.f('uq_drive_star'), 'drive_stars', type_='unique')
op.drop_constraint(op.f('drive_stars_user_id_fkey'), 'drive_stars', type_='foreignkey')
op.create_foreign_key(None, 'drive_stars', 'users', ['user_id'], ['id'])
op.drop_column('drive_stars', 'created_at')
op.alter_column('project_activities', 'ip_address',
existing_type=sa.VARCHAR(length=64),
type_=sa.String(length=45),
existing_nullable=True)
op.alter_column('project_comments', 'anchor',
existing_type=postgresql.JSONB(astext_type=sa.Text()),
type_=sa.Text(),
existing_nullable=True)
op.alter_column('project_shares', 'permission',
existing_type=sa.VARCHAR(length=50),
type_=sa.String(length=20),
existing_nullable=False)
op.drop_constraint(op.f('unique_project_user_share'), 'project_shares', type_='unique')
op.drop_constraint(op.f('project_shares_shared_by_user_id_fkey'), 'project_shares', type_='foreignkey')
op.drop_column('project_shares', 'updated_at')
op.drop_column('project_shares', 'shared_by_user_id')
op.add_column('project_versions', sa.Column('version_label', sa.String(length=50), nullable=False))
op.add_column('project_versions', sa.Column('description', sa.Text(), nullable=True))
op.alter_column('project_versions', 'created_by_id',
existing_type=sa.INTEGER(),
nullable=True)
op.drop_constraint(op.f('project_versions_created_by_id_fkey'), 'project_versions', type_='foreignkey')
op.create_foreign_key(None, 'project_versions', 'users', ['created_by_id'], ['id'], ondelete='SET NULL')
op.drop_column('project_versions', 'changes_description')
op.drop_column('project_versions', 'session_id')
op.add_column('user_files', sa.Column('filename', sa.String(), nullable=False))
op.add_column('user_files', sa.Column('size', sa.BigInteger(), nullable=True))
op.add_column('user_files', sa.Column('content_type', sa.String(), nullable=True))
op.add_column('user_files', sa.Column('status', sa.String(), nullable=True))
op.alter_column('user_files', 'created_at',
existing_type=postgresql.TIMESTAMP(timezone=True),
type_=sa.TIMESTAMP(),
nullable=True,
existing_server_default=sa.text('now()'))
op.drop_constraint(op.f('user_files_s3_key_key'), 'user_files', type_='unique')
op.create_index(op.f('ix_user_files_id'), 'user_files', ['id'], unique=False)
op.create_index(op.f('ix_user_files_user_id'), 'user_files', ['user_id'], unique=False)
op.drop_constraint(op.f('user_files_user_id_fkey'), 'user_files', type_='foreignkey')
op.create_foreign_key(None, 'user_files', 'users', ['user_id'], ['id'])
op.drop_column('user_files', 'file_name')
op.drop_column('user_files', 'deleted_at')
op.drop_column('user_files', 'file_size')
op.drop_column('user_files', 'is_deleted')
op.drop_column('user_files', 'mime_type')
op.add_column('user_storage_usage', sa.Column('id', sa.Integer(), nullable=False))
op.add_column('user_storage_usage', sa.Column('total_bytes_used', sa.BigInteger(), nullable=True))
op.add_column('user_storage_usage', sa.Column('total_files_count', sa.Integer(), nullable=True))
op.alter_column('user_storage_usage', 'last_updated',
existing_type=postgresql.TIMESTAMP(timezone=True),
type_=sa.TIMESTAMP(),
nullable=True,
existing_server_default=sa.text('now()'))
op.create_index(op.f('ix_user_storage_usage_id'), 'user_storage_usage', ['id'], unique=False)
op.create_unique_constraint(None, 'user_storage_usage', ['user_id'])
op.drop_constraint(op.f('user_storage_usage_user_id_fkey'), 'user_storage_usage', type_='foreignkey')
op.create_foreign_key(None, 'user_storage_usage', 'users', ['user_id'], ['id'])
op.drop_column('user_storage_usage', 'total_bytes')
op.drop_column('user_storage_usage', 'file_count')
# ### end Alembic commands ###
def downgrade() -> None:
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('user_storage_usage', sa.Column('file_count', sa.INTEGER(), autoincrement=False, nullable=False))
op.add_column('user_storage_usage', sa.Column('total_bytes', sa.BIGINT(), autoincrement=False, nullable=False))
op.drop_constraint(None, 'user_storage_usage', type_='foreignkey')
op.create_foreign_key(op.f('user_storage_usage_user_id_fkey'), 'user_storage_usage', 'users', ['user_id'], ['id'], ondelete='CASCADE')
op.drop_constraint(None, 'user_storage_usage', type_='unique')
op.drop_index(op.f('ix_user_storage_usage_id'), table_name='user_storage_usage')
op.alter_column('user_storage_usage', 'last_updated',
existing_type=sa.TIMESTAMP(),
type_=postgresql.TIMESTAMP(timezone=True),
nullable=False,
existing_server_default=sa.text('now()'))
op.drop_column('user_storage_usage', 'total_files_count')
op.drop_column('user_storage_usage', 'total_bytes_used')
op.drop_column('user_storage_usage', 'id')
op.add_column('user_files', sa.Column('mime_type', sa.VARCHAR(length=255), autoincrement=False, nullable=True))
op.add_column('user_files', sa.Column('is_deleted', sa.BOOLEAN(), autoincrement=False, nullable=False))
op.add_column('user_files', sa.Column('file_size', sa.BIGINT(), autoincrement=False, nullable=False))
op.add_column('user_files', sa.Column('deleted_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True))
op.add_column('user_files', sa.Column('file_name', sa.VARCHAR(length=512), autoincrement=False, nullable=False))
op.drop_constraint(None, 'user_files', type_='foreignkey')
op.create_foreign_key(op.f('user_files_user_id_fkey'), 'user_files', 'users', ['user_id'], ['id'], ondelete='CASCADE')
op.drop_index(op.f('ix_user_files_user_id'), table_name='user_files')
op.drop_index(op.f('ix_user_files_id'), table_name='user_files')
op.create_unique_constraint(op.f('user_files_s3_key_key'), 'user_files', ['s3_key'])
op.alter_column('user_files', 'created_at',
existing_type=sa.TIMESTAMP(),
type_=postgresql.TIMESTAMP(timezone=True),
nullable=False,
existing_server_default=sa.text('now()'))
op.drop_column('user_files', 'status')
op.drop_column('user_files', 'content_type')
op.drop_column('user_files', 'size')
op.drop_column('user_files', 'filename')
op.add_column('project_versions', sa.Column('session_id', sa.VARCHAR(length=255), autoincrement=False, nullable=True))
op.add_column('project_versions', sa.Column('changes_description', sa.VARCHAR(length=500), autoincrement=False, nullable=True))
op.drop_constraint(None, 'project_versions', type_='foreignkey')
op.create_foreign_key(op.f('project_versions_created_by_id_fkey'), 'project_versions', 'users', ['created_by_id'], ['id'])
op.alter_column('project_versions', 'created_by_id',
existing_type=sa.INTEGER(),
nullable=False)
op.drop_column('project_versions', 'description')
op.drop_column('project_versions', 'version_label')
op.add_column('project_shares', sa.Column('shared_by_user_id', sa.INTEGER(), autoincrement=False, nullable=False))
op.add_column('project_shares', sa.Column('updated_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=False))
op.create_foreign_key(op.f('project_shares_shared_by_user_id_fkey'), 'project_shares', 'users', ['shared_by_user_id'], ['id'], ondelete='CASCADE')
op.create_unique_constraint(op.f('unique_project_user_share'), 'project_shares', ['project_id', 'shared_with_user_id'])
op.alter_column('project_shares', 'permission',
existing_type=sa.String(length=20),
type_=sa.VARCHAR(length=50),
existing_nullable=False)
op.alter_column('project_comments', 'anchor',
existing_type=sa.Text(),
type_=postgresql.JSONB(astext_type=sa.Text()),
existing_nullable=True)
op.alter_column('project_activities', 'ip_address',
existing_type=sa.String(length=45),
type_=sa.VARCHAR(length=64),
existing_nullable=True)
op.add_column('drive_stars', sa.Column('created_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=False))
op.drop_constraint(None, 'drive_stars', type_='foreignkey')
op.create_foreign_key(op.f('drive_stars_user_id_fkey'), 'drive_stars', 'users', ['user_id'], ['id'], ondelete='CASCADE')
op.create_unique_constraint(op.f('uq_drive_star'), 'drive_stars', ['resource_type', 'resource_id', 'user_id'])
op.alter_column('drive_stars', 'resource_id',
existing_type=sa.INTEGER(),
nullable=False)
op.alter_column('drive_stars', 'resource_type',
existing_type=sa.VARCHAR(length=10),
nullable=False)
op.alter_column('drive_stars', 'user_id',
existing_type=sa.INTEGER(),
nullable=False)
op.add_column('drive_file_versions', sa.Column('mime_type', sa.VARCHAR(length=255), autoincrement=False, nullable=True))
op.add_column('drive_file_versions', sa.Column('storage_key', sa.TEXT(), autoincrement=False, nullable=False))
op.add_column('drive_file_versions', sa.Column('created_by_id', sa.INTEGER(), autoincrement=False, nullable=False))
op.add_column('drive_file_versions', sa.Column('checksum', sa.VARCHAR(length=128), autoincrement=False, nullable=True))
op.drop_constraint(None, 'drive_file_versions', type_='foreignkey')
op.drop_constraint(None, 'drive_file_versions', type_='foreignkey')
op.create_foreign_key(op.f('drive_file_versions_created_by_id_fkey'), 'drive_file_versions', 'users', ['created_by_id'], ['id'])
op.create_foreign_key(op.f('drive_file_versions_file_id_fkey'), 'drive_file_versions', 'drive_files', ['file_id'], ['id'], ondelete='CASCADE')
op.alter_column('drive_file_versions', 'created_at',
existing_type=sa.TIMESTAMP(),
type_=postgresql.TIMESTAMP(timezone=True),
nullable=False,
existing_server_default=sa.text('now()'))
op.alter_column('drive_file_versions', 'size',
existing_type=sa.BIGINT(),
nullable=False)
op.alter_column('drive_file_versions', 'version_number',
existing_type=sa.INTEGER(),
nullable=False)
op.alter_column('drive_file_versions', 'file_id',
existing_type=sa.INTEGER(),
nullable=False)
op.drop_column('drive_file_versions', 'uploader_id')
op.drop_column('drive_file_versions', 'content_type')
op.drop_column('drive_file_versions', 's3_key')
op.add_column('drive_comments', sa.Column('author_id', sa.INTEGER(), autoincrement=False, nullable=False))
op.add_column('drive_comments', sa.Column('resolved_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True))
op.add_column('drive_comments', sa.Column('body', sa.TEXT(), autoincrement=False, nullable=False))
op.add_column('drive_comments', sa.Column('anchor', postgresql.JSONB(astext_type=sa.Text()), autoincrement=False, nullable=True))
op.drop_constraint(None, 'drive_comments', type_='foreignkey')
op.drop_constraint(None, 'drive_comments', type_='foreignkey')
op.create_foreign_key(op.f('drive_comments_author_id_fkey'), 'drive_comments', 'users', ['author_id'], ['id'], ondelete='CASCADE')
op.create_foreign_key(op.f('drive_comments_file_id_fkey'), 'drive_comments', 'drive_files', ['file_id'], ['id'], ondelete='CASCADE')
op.alter_column('drive_comments', 'created_at',
existing_type=sa.TIMESTAMP(),
type_=postgresql.TIMESTAMP(timezone=True),
nullable=False,
existing_server_default=sa.text('now()'))
op.drop_column('drive_comments', 'content')
op.drop_column('drive_comments', 'user_id')
op.add_column('drive_activities', sa.Column('ip_address', sa.VARCHAR(length=64), autoincrement=False, nullable=True))
op.add_column('drive_activities', sa.Column('device_info', sa.TEXT(), autoincrement=False, nullable=True))
op.drop_constraint(None, 'drive_activities', type_='foreignkey')
op.create_foreign_key(op.f('drive_activities_actor_id_fkey'), 'drive_activities', 'users', ['actor_id'], ['id'], ondelete='CASCADE')
op.alter_column('drive_activities', 'created_at',
existing_type=sa.TIMESTAMP(),
type_=postgresql.TIMESTAMP(timezone=True),
nullable=False,
existing_server_default=sa.text('now()'))
op.alter_column('drive_activities', 'activity_type',
existing_type=sa.VARCHAR(length=50),
nullable=False)
op.alter_column('drive_activities', 'actor_id',
existing_type=sa.INTEGER(),
nullable=False)
op.alter_column('drive_activities', 'resource_id',
existing_type=sa.INTEGER(),
nullable=False)
op.alter_column('drive_activities', 'resource_type',
existing_type=sa.String(length=20),
type_=sa.VARCHAR(length=10),
nullable=False)
op.create_table('drive_acl',
sa.Column('id', sa.INTEGER(), autoincrement=True, nullable=False),
sa.Column('resource_type', sa.VARCHAR(length=10), autoincrement=False, nullable=False),
sa.Column('resource_id', sa.INTEGER(), autoincrement=False, nullable=False),
sa.Column('subject_type', sa.VARCHAR(length=10), autoincrement=False, nullable=False),
sa.Column('subject_id', sa.INTEGER(), autoincrement=False, nullable=True),
sa.Column('role', sa.VARCHAR(length=20), autoincrement=False, nullable=False),
sa.Column('inherited_from', sa.INTEGER(), autoincrement=False, nullable=True),
sa.Column('created_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=False),
sa.PrimaryKeyConstraint('id', name=op.f('drive_acl_pkey'))
)
op.drop_index(op.f('ix_vector_indices_user_id'), table_name='vector_indices')
op.drop_index(op.f('ix_vector_indices_id'), table_name='vector_indices')
op.drop_table('vector_indices')
op.drop_index(op.f('ix_vector_chunks_user_id'), table_name='vector_chunks')
op.drop_index(op.f('ix_vector_chunks_id'), table_name='vector_chunks')
op.drop_index(op.f('ix_vector_chunks_document_id'), table_name='vector_chunks')
op.drop_table('vector_chunks')
op.drop_index(op.f('ix_chatbot_documents_user_id'), table_name='chatbot_documents')
op.drop_index(op.f('ix_chatbot_documents_id'), table_name='chatbot_documents')
op.drop_index(op.f('ix_chatbot_documents_drive_file_id'), table_name='chatbot_documents')
op.drop_index(op.f('ix_chatbot_documents_document_id'), table_name='chatbot_documents')
op.drop_table('chatbot_documents')
op.drop_table('drive_acls')
# ### end Alembic commands ###