"""durable worldquant backtests""" import sqlalchemy as sa from alembic import op revision = "0003" down_revision = "0002" branch_labels = None depends_on = None def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.create_table( "backtest_config", sa.Column("id", sa.Integer(), nullable=False), sa.Column("concurrency", sa.Integer(), nullable=False), sa.Column("batch_size", sa.Integer(), nullable=False), sa.Column("version", sa.Integer(), nullable=False), sa.Column("blocked_reason", sa.Text(), nullable=True), sa.Column("blocked_until", sa.DateTime(timezone=True), nullable=True), sa.PrimaryKeyConstraint("id"), ) op.create_table( "backtest_drafts", sa.Column("id", sa.String(length=36), nullable=False), sa.Column("version", sa.Integer(), nullable=False), sa.Column("name", sa.String(length=200), nullable=False), sa.Column("source", sa.JSON(), nullable=False), sa.Column("candidates", sa.JSON(), nullable=False), sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False), sa.PrimaryKeyConstraint("id"), ) op.create_table( "backtest_previews", sa.Column("id", sa.String(length=36), nullable=False), sa.Column("version", sa.Integer(), nullable=False), sa.Column("name", sa.String(length=200), nullable=False), sa.Column("source", sa.JSON(), nullable=False), sa.Column("candidates", sa.JSON(), nullable=False), sa.Column("batches", sa.JSON(), nullable=False), sa.Column("batch_size", sa.Integer(), nullable=False), sa.Column("digest", sa.String(length=64), nullable=False), sa.Column("duplicates", sa.JSON(), nullable=False), sa.Column("ai_context", sa.JSON(), nullable=False), sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), sa.PrimaryKeyConstraint("id"), ) op.create_table( "backtest_runs", sa.Column("id", sa.String(length=36), nullable=False), sa.Column("preview_id", sa.String(length=36), nullable=False), sa.Column("idempotency_key", sa.String(length=100), nullable=False), sa.Column("name", sa.String(length=200), nullable=False), sa.Column("source", sa.JSON(), nullable=False), sa.Column("ai_context", sa.JSON(), nullable=False), sa.Column("control", sa.String(length=20), nullable=False), sa.Column("status", sa.String(length=30), nullable=False), sa.Column("version", sa.Integer(), nullable=False), sa.Column("event_seq", sa.Integer(), nullable=False), sa.Column("total", sa.Integer(), nullable=False), sa.Column("batch_size", sa.Integer(), nullable=False), sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), sa.Column("updated_at", sa.DateTime(timezone=True), nullable=False), sa.ForeignKeyConstraint( ["preview_id"], ["backtest_previews.id"], ), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("idempotency_key"), sa.UniqueConstraint("preview_id"), ) op.create_index(op.f("ix_backtest_runs_status"), "backtest_runs", ["status"], unique=False) op.create_table( "backtest_events", sa.Column("run_id", sa.String(length=36), nullable=False), sa.Column("seq", sa.Integer(), nullable=False), sa.Column("kind", sa.String(length=50), nullable=False), sa.Column("payload", sa.JSON(), nullable=False), sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), sa.ForeignKeyConstraint( ["run_id"], ["backtest_runs.id"], ), sa.PrimaryKeyConstraint("run_id", "seq"), ) op.create_table( "simulation_attempts", sa.Column("id", sa.String(length=36), nullable=False), sa.Column("run_id", sa.String(length=36), nullable=False), sa.Column("ordinal", sa.Integer(), nullable=False), sa.Column("state", sa.String(length=30), nullable=False), sa.Column("payload", sa.JSON(), nullable=False), sa.Column("progress_url", sa.Text(), nullable=True), sa.Column("remote_complete", sa.Boolean(), nullable=False), sa.Column("children", sa.JSON(), nullable=False), sa.Column("receipts", sa.JSON(), nullable=False), sa.Column("poll_count", sa.Integer(), nullable=False), sa.Column("submit_count", sa.Integer(), nullable=False), sa.Column("next_poll_at", sa.DateTime(timezone=True), nullable=True), sa.Column("error", sa.Text(), nullable=True), sa.Column("error_code", sa.String(length=50), nullable=True), sa.Column("created_at", sa.DateTime(timezone=True), nullable=False), sa.ForeignKeyConstraint( ["run_id"], ["backtest_runs.id"], ), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("run_id", "ordinal"), ) op.create_index(op.f("ix_simulation_attempts_run_id"), "simulation_attempts", ["run_id"], unique=False) op.create_index(op.f("ix_simulation_attempts_state"), "simulation_attempts", ["state"], unique=False) op.create_table( "backtest_items", sa.Column("id", sa.String(length=36), nullable=False), sa.Column("run_id", sa.String(length=36), nullable=False), sa.Column("attempt_id", sa.String(length=36), nullable=False), sa.Column("client_item_id", sa.String(length=100), nullable=False), sa.Column("ordinal", sa.Integer(), nullable=False), sa.Column("expression", sa.Text(), nullable=False), sa.Column("settings", sa.JSON(), nullable=False), sa.Column("fingerprint", sa.String(length=64), nullable=False), sa.Column("platform_status", sa.String(length=30), nullable=False), sa.Column("collection_status", sa.String(length=30), nullable=False), sa.Column("persistence_status", sa.String(length=30), nullable=False), sa.Column("simulation_id", sa.String(length=100), nullable=True), sa.Column("alpha_id", sa.String(length=100), nullable=True), sa.Column("error", sa.Text(), nullable=True), sa.ForeignKeyConstraint( ["attempt_id"], ["simulation_attempts.id"], ), sa.ForeignKeyConstraint( ["run_id"], ["backtest_runs.id"], ), sa.PrimaryKeyConstraint("id"), sa.UniqueConstraint("run_id", "client_item_id"), ) op.create_index(op.f("ix_backtest_items_attempt_id"), "backtest_items", ["attempt_id"], unique=False) op.create_index(op.f("ix_backtest_items_fingerprint"), "backtest_items", ["fingerprint"], unique=False) op.create_index(op.f("ix_backtest_items_run_id"), "backtest_items", ["run_id"], unique=False) op.create_table( "backtest_results", sa.Column("item_id", sa.String(length=36), nullable=False), sa.Column("attempt_id", sa.String(length=36), nullable=False), sa.Column("alpha_id", sa.String(length=100), nullable=False), sa.Column("snapshot", sa.JSON(), nullable=False), sa.Column("observed_at", sa.DateTime(timezone=True), nullable=False), sa.Column("complete", sa.Boolean(), nullable=False), sa.ForeignKeyConstraint( ["alpha_id"], ["alphas.id"], ), sa.ForeignKeyConstraint( ["attempt_id"], ["simulation_attempts.id"], ), sa.ForeignKeyConstraint( ["item_id"], ["backtest_items.id"], ), sa.PrimaryKeyConstraint("item_id"), ) op.create_index(op.f("ix_backtest_results_alpha_id"), "backtest_results", ["alpha_id"], unique=False) # ### end Alembic commands ### def downgrade(): # ### commands auto generated by Alembic - please adjust! ### op.drop_index(op.f("ix_backtest_results_alpha_id"), table_name="backtest_results") op.drop_table("backtest_results") op.drop_index(op.f("ix_backtest_items_run_id"), table_name="backtest_items") op.drop_index(op.f("ix_backtest_items_fingerprint"), table_name="backtest_items") op.drop_index(op.f("ix_backtest_items_attempt_id"), table_name="backtest_items") op.drop_table("backtest_items") op.drop_index(op.f("ix_simulation_attempts_state"), table_name="simulation_attempts") op.drop_index(op.f("ix_simulation_attempts_run_id"), table_name="simulation_attempts") op.drop_table("simulation_attempts") op.drop_table("backtest_events") op.drop_index(op.f("ix_backtest_runs_status"), table_name="backtest_runs") op.drop_table("backtest_runs") op.drop_table("backtest_previews") op.drop_table("backtest_drafts") op.drop_table("backtest_config") # ### end Alembic commands ###