diff --git a/surfsense_backend/alembic/versions/0_initial_schema.py b/surfsense_backend/alembic/versions/0_initial_schema.py new file mode 100644 index 000000000..77bd9dd1b --- /dev/null +++ b/surfsense_backend/alembic/versions/0_initial_schema.py @@ -0,0 +1,54 @@ +"""Initial schema setup + +Revision ID: 0 +Revises: None + +Creates all tables from SQLAlchemy models. Idempotent - safe to run on existing databases. +""" + +from collections.abc import Sequence + +import sqlalchemy as sa + +from alembic import op + +revision: str = "0" +down_revision: str | None = None +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None + + +def upgrade() -> None: + from app.db import Base + + connection = op.get_bind() + + # Create tables + op.execute(sa.text("CREATE EXTENSION IF NOT EXISTS vector")) + Base.metadata.create_all(bind=connection) + + # Set up indexes + op.execute( + sa.text( + "CREATE INDEX IF NOT EXISTS document_vector_index ON documents USING hnsw (embedding public.vector_cosine_ops)" + ) + ) + op.execute( + sa.text( + "CREATE INDEX IF NOT EXISTS document_search_index ON documents USING gin (to_tsvector('english', content))" + ) + ) + op.execute( + sa.text( + "CREATE INDEX IF NOT EXISTS chucks_vector_index ON chunks USING hnsw (embedding public.vector_cosine_ops)" + ) + ) + op.execute( + sa.text( + "CREATE INDEX IF NOT EXISTS chucks_search_index ON chunks USING gin (to_tsvector('english', content))" + ) + ) + + +def downgrade() -> None: + pass diff --git a/surfsense_backend/alembic/versions/1_add_github_connector_enum.py b/surfsense_backend/alembic/versions/1_add_github_connector_enum.py index ee008d8c5..6f3ee2a01 100644 --- a/surfsense_backend/alembic/versions/1_add_github_connector_enum.py +++ b/surfsense_backend/alembic/versions/1_add_github_connector_enum.py @@ -11,13 +11,9 @@ import sqlalchemy as sa from alembic import op -# Import pgvector if needed for other types, though not for this ENUM change -# import pgvector - - # revision identifiers, used by Alembic. revision: str = "1" -down_revision: str | None = None +down_revision: str | None = "0" branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None