import * as NodeSqliteClient from '@t3tools/shared/nodeSqliteClient';
import * as Effect from 'effect/Effect';
import * as SqlClient from 'effect/sql/SqlClient';
import { runMigrations } from './src/persistence/Migrations.ts';
await Effect.runPromise(Effect.gen(function* () {
 const sql = yield* SqlClient.SqlClient;
 yield* runMigrations({ toMigrationInclusive: process.argv[3] === 'repair-existing-index' ? 91 : 85 });
 yield* sql`INSERT INTO orchestration_v2_projection_turn_items
 (turn_item_id, thread_id, run_id, ordinal, type, status, updated_at, payload_json)
 VALUES ('before-86', 'thread-1', 'run-1', 1, 'user_message', 'completed', '2026-11-14T00:00:00.000Z', ${process.argv[3] !== 'existing-malformed' ? '{}' : '{not json'})`;
 if (process.argv[3] === 'repair-existing-index') {
 yield* sql`DROP INDEX orchestration_v2_projection_turn_items_queued_input_idx`;
 yield* sql`CREATE INDEX orchestration_v2_projection_turn_items_queued_input_idx ON orchestration_v2_projection_turn_items(run_id) WHERE type = 'user_message' AND json_extract(payload_json, '$.inputIntent') = 'queued_turn'`;
 }
 console.log('Synthetic database seeded');
}).pipe(Effect.provide(NodeSqliteClient.layer({ filename: process.argv[2] }))));
