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
7 // Relay delivery ids already handled, kept longer than the relay holds a
8 // request so a replay can never run twice. The delivery log keeps only the
9 // newest 50 rows per task, which is too short for that.
10 yield* sql`
11 CREATE TABLE IF NOT EXISTS scheduled_task_webhook_relay_deliveries (
12 relay_delivery_id TEXT PRIMARY KEY,
13 task_id TEXT NOT NULL,
14 seen_at TEXT NOT NULL
15 )
16 `;
17
18 yield* sql`
19 CREATE INDEX IF NOT EXISTS idx_scheduled_task_webhook_relay_deliveries_seen
20 ON scheduled_task_webhook_relay_deliveries(seen_at)
21 `;
22});