generated from kgod/ai-review-template
46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
"""Add durable reviewable resume import metadata to PostgreSQL."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from alembic import op
|
|
|
|
|
|
revision = "20260724_03"
|
|
down_revision = "20260724_01"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
schema = op.get_context().config.get_main_option("resume_agent.schema", "resume_agent")
|
|
bind = op.get_bind()
|
|
bind.exec_driver_sql(
|
|
f'''
|
|
CREATE TABLE IF NOT EXISTS "{schema}".resume_imports (
|
|
id VARCHAR(128) PRIMARY KEY,
|
|
session_id VARCHAR(128) NOT NULL
|
|
REFERENCES "{schema}".sessions(id) ON DELETE CASCADE,
|
|
file_name VARCHAR(512) NOT NULL,
|
|
mime_type VARCHAR(128) NOT NULL,
|
|
size_bytes INTEGER NOT NULL CHECK (size_bytes >= 0),
|
|
sha256 VARCHAR(64) NOT NULL,
|
|
object_key VARCHAR(512) NOT NULL,
|
|
status VARCHAR(32) NOT NULL,
|
|
document JSONB,
|
|
field_reviews JSONB NOT NULL DEFAULT '[]'::jsonb,
|
|
error_code VARCHAR(128),
|
|
created_at TIMESTAMPTZ NOT NULL,
|
|
updated_at TIMESTAMPTZ NOT NULL,
|
|
CONSTRAINT uq_resume_import_session_sha256 UNIQUE (session_id, sha256)
|
|
)
|
|
'''
|
|
)
|
|
bind.exec_driver_sql(
|
|
f'''CREATE INDEX IF NOT EXISTS ix_resume_imports_session_created
|
|
ON "{schema}".resume_imports (session_id, created_at)'''
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
schema = op.get_context().config.get_main_option("resume_agent.schema", "resume_agent")
|
|
op.get_bind().exec_driver_sql(f'DROP TABLE IF EXISTS "{schema}".resume_imports') |