"""initial schema: discovery_conversation and discovery_profile Revision ID: 001 Revises: Create Date: 2026-05-25 """ from typing import Sequence, Union import sqlalchemy as sa from alembic import op # revision identifiers, used by Alembic. revision: str = "001" down_revision: Union[str, None] = None branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.create_table( "discovery_conversation", sa.Column("id", sa.String(), primary_key=True), sa.Column("user_id", sa.String(), nullable=False), sa.Column("started_at", sa.DateTime(), nullable=False), sa.Column("completed_at", sa.DateTime(), nullable=True), sa.Column("prompt_alive", sa.Text(), nullable=True), sa.Column("prompt_friction", sa.Text(), nullable=True), sa.Column("prompt_pull", sa.Text(), nullable=True), sa.Column("prompt_recognition", sa.Text(), nullable=True), sa.Column("prompt_future", sa.Text(), nullable=True), ) op.create_index( "ix_discovery_conversation_user_id", "discovery_conversation", ["user_id"], ) op.create_table( "discovery_profile", sa.Column("id", sa.String(), primary_key=True), sa.Column("user_id", sa.String(), nullable=False), sa.Column( "conversation_id", sa.String(), sa.ForeignKey("discovery_conversation.id"), nullable=False, ), sa.Column("generated_at", sa.DateTime(), nullable=False), sa.Column("triad", sa.String(), nullable=True), sa.Column("probable_type", sa.Integer(), nullable=True), sa.Column("wing", sa.Integer(), nullable=True), sa.Column("instinctual_variant", sa.String(), nullable=True), sa.Column("instinctual_stack", sa.String(), nullable=True), sa.Column("love_summary", sa.Text(), nullable=True), sa.Column("strength_summary", sa.Text(), nullable=True), sa.Column("mission_summary", sa.Text(), nullable=True), sa.Column("vocation_summary", sa.Text(), nullable=True), sa.Column("overlap_narrative", sa.Text(), nullable=True), sa.Column("confidence_json", sa.Text(), nullable=True), sa.Column( "locked", sa.Boolean(), nullable=False, server_default=sa.text("0"), ), ) op.create_index( "ix_discovery_profile_user_id", "discovery_profile", ["user_id"] ) def downgrade() -> None: op.drop_index("ix_discovery_profile_user_id", table_name="discovery_profile") op.drop_table("discovery_profile") op.drop_index( "ix_discovery_conversation_user_id", table_name="discovery_conversation", ) op.drop_table("discovery_conversation")