MIGRATIONS=['CREATE TABLE IF NOT EXISTS checkpoint_migrations (
\n v INTEGER PRIMARY KEY\n);',"CREATE TABLE IF NOT EXISTS checkpoints (\n thread_id TEXT NOT NULL,
\n checkpoint_ns TEXT NOT NULL DEFAULT '',
\n checkpoint_id TEXT NOT NULL,
\n parent_checkpoint_id TEXT,
\n type TEXT,
\n checkpoint JSONB NOT NULL,
\n metadata JSONB NOT NULL DEFAULT '{}',
\n PRIMARY KEY (thread_id, checkpoint_ns, checkpoint_id)\n);",
"CREATE TABLE IF NOT EXISTS checkpoint_blobs (\n thread_id TEXT NOT NULL,
\n checkpoint_ns TEXT NOT NULL DEFAULT '',
\n channel TEXT NOT NULL,
\n version TEXT NOT NULL,
\n type TEXT NOT NULL,
\n blob BYTEA,
\n PRIMARY KEY (thread_id, checkpoint_ns, channel, version)\n);"
,
"CREATE TABLE IF NOT EXISTS checkpoint_writes (\n thread_id TEXT NOT NULL,
\n checkpoint_ns TEXT NOT NULL DEFAULT '',
\n checkpoint_id TEXT NOT NULL,
\n task_id TEXT NOT NULL,
\n idx INTEGER NOT NULL,
\n channel TEXT NOT NULL,
\n type TEXT,
\n blob BYTEA NOT NULL,
\n PRIMARY KEY (thread_id, checkpoint_ns, checkpoint_id, task_id, idx)\n);"
,
'ALTER TABLE checkpoint_blobs ALTER COLUMN blob DROP not null;'
,
'SELECT 1;'
,
'\n CREATE INDEX CONCURRENTLY IF NOT EXISTS checkpoints_thread_id_idx ON checkpoints(thread_id);\n '
,
'\n CREATE INDEX CONCURRENTLY IF NOT EXISTS checkpoint_blobs_thread_id_idx ON checkpoint_blobs(thread_id);\n '
,
'\n CREATE INDEX CONCURRENTLY IF NOT EXISTS checkpoint_writes_thread_id_idx ON checkpoint_writes(thread_id
);\n '
,
"ALTER TABLE checkpoint_writes ADD COLUMN IF NOT EXISTS task_path TEXT NOT NULL DEFAULT '';"