aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/db/schema.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/db/schema.ts')
-rw-r--r--src/main/db/schema.ts35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/main/db/schema.ts b/src/main/db/schema.ts
new file mode 100644
index 0000000..c2093f9
--- /dev/null
+++ b/src/main/db/schema.ts
@@ -0,0 +1,35 @@
1import Database from "better-sqlite3";
2
3export function initSchema(db: Database.Database) {
4 db.exec(`
5 CREATE TABLE IF NOT EXISTS projects (
6 id TEXT PRIMARY KEY,
7 name TEXT NOT NULL,
8 path TEXT NOT NULL,
9 created_at INTEGER NOT NULL DEFAULT (unixepoch()),
10 updated_at INTEGER NOT NULL DEFAULT (unixepoch())
11 );
12
13 CREATE TABLE IF NOT EXISTS sessions (
14 id TEXT PRIMARY KEY,
15 project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
16 name TEXT NOT NULL,
17 phase TEXT NOT NULL DEFAULT 'research',
18 claude_session_id TEXT,
19 permission_mode TEXT NOT NULL DEFAULT 'acceptEdits',
20 created_at INTEGER NOT NULL DEFAULT (unixepoch()),
21 updated_at INTEGER NOT NULL DEFAULT (unixepoch())
22 );
23
24 CREATE TABLE IF NOT EXISTS messages (
25 id TEXT PRIMARY KEY,
26 session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
27 role TEXT NOT NULL,
28 content TEXT NOT NULL,
29 created_at INTEGER NOT NULL DEFAULT (unixepoch())
30 );
31
32 CREATE INDEX IF NOT EXISTS idx_sessions_project ON sessions(project_id);
33 CREATE INDEX IF NOT EXISTS idx_messages_session ON messages(session_id);
34 `);
35}