1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/sql/SqlClient";
3
4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;
6 yield* sql`CREATE TABLE transcript_archives (
7 thread_id TEXT PRIMARY KEY,
8 location TEXT NOT NULL,
9 object_hash TEXT NOT NULL,
10 through_sequence INTEGER NOT NULL,
11 metadata_json TEXT NOT NULL
12 )`;
13 yield* sql`CREATE TABLE transcript_archive_assets (
14 thread_id TEXT NOT NULL,
15 path TEXT NOT NULL,
16 location TEXT NOT NULL,
17 object_hash TEXT NOT NULL,
18 PRIMARY KEY(thread_id, path)
19 )`;
20 yield* sql`CREATE INDEX transcript_archive_assets_path_idx ON transcript_archive_assets(path)`;
21 yield* sql`CREATE TABLE transcript_archive_failures (
22 thread_id TEXT PRIMARY KEY,
23 attempts INTEGER NOT NULL,
24 reason TEXT NOT NULL
25 )`;
26});