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 yield* sql`
8 CREATE TABLE IF NOT EXISTS auth_pairing_links (
9 id TEXT PRIMARY KEY,
10 credential TEXT NOT NULL UNIQUE,
11 method TEXT NOT NULL,
12 role TEXT NOT NULL,
13 subject TEXT NOT NULL,
14 created_at TEXT NOT NULL,
15 expires_at TEXT NOT NULL,
16 consumed_at TEXT,
17 revoked_at TEXT
18 )
19 `;
20
21 yield* sql`
22 CREATE INDEX IF NOT EXISTS idx_auth_pairing_links_active
23 ON auth_pairing_links(revoked_at, consumed_at, expires_at)
24 `;
25
26 yield* sql`
27 CREATE TABLE IF NOT EXISTS auth_sessions (
28 session_id TEXT PRIMARY KEY,
29 subject TEXT NOT NULL,
30 role TEXT NOT NULL,
31 method TEXT NOT NULL,
32 issued_at TEXT NOT NULL,
33 expires_at TEXT NOT NULL,
34 revoked_at TEXT
35 )
36 `;
37
38 yield* sql`
39 CREATE INDEX IF NOT EXISTS idx_auth_sessions_active
40 ON auth_sessions(revoked_at, expires_at, issued_at)
41 `;
42});