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

68 lines
2.3 KiB
Python

"""add missing vector columns
Revision ID: 1f4d2a8c9b77
Revises: fb6810c36ffb
Create Date: 2026-04-08 22:05:00
"""
from typing import Sequence, Union
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision: str = "1f4d2a8c9b77"
down_revision: Union[str, None] = "fb6810c36ffb"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def _table_exists(bind, table_name: str) -> bool:
return sa.inspect(bind).has_table(table_name)
def _column_exists(bind, table_name: str, column_name: str) -> bool:
inspector = sa.inspect(bind)
return column_name in {col["name"] for col in inspector.get_columns(table_name)}
def upgrade() -> None:
bind = op.get_bind()
if _table_exists(bind, "vector_indices"):
if not _column_exists(bind, "vector_indices", "index_name"):
op.add_column(
"vector_indices", sa.Column("index_name", sa.String(length=255), nullable=True)
)
if not _column_exists(bind, "vector_indices", "checksum"):
op.add_column(
"vector_indices", sa.Column("checksum", sa.String(length=255), nullable=True)
)
if not _column_exists(bind, "vector_indices", "metadata_info"):
op.add_column(
"vector_indices", sa.Column("metadata_info", sa.JSON(), nullable=True)
)
if _table_exists(bind, "vector_chunks"):
if not _column_exists(bind, "vector_chunks", "embedding_json"):
op.add_column(
"vector_chunks", sa.Column("embedding_json", sa.JSON(), nullable=True)
)
def downgrade() -> None:
bind = op.get_bind()
if _table_exists(bind, "vector_chunks"):
if _column_exists(bind, "vector_chunks", "embedding_json"):
op.drop_column("vector_chunks", "embedding_json")
if _table_exists(bind, "vector_indices"):
if _column_exists(bind, "vector_indices", "metadata_info"):
op.drop_column("vector_indices", "metadata_info")
if _column_exists(bind, "vector_indices", "checksum"):
op.drop_column("vector_indices", "checksum")
if _column_exists(bind, "vector_indices", "index_name"):
op.drop_column("vector_indices", "index_name")