diff options
Diffstat (limited to 'src/main/db')
| -rw-r--r-- | src/main/db/index.ts | 10 | ||||
| -rw-r--r-- | src/main/db/schema.ts | 1 | ||||
| -rw-r--r-- | src/main/db/sessions.ts | 4 |
3 files changed, 14 insertions, 1 deletions
diff --git a/src/main/db/index.ts b/src/main/db/index.ts index a77cdd4..1613abc 100644 --- a/src/main/db/index.ts +++ b/src/main/db/index.ts | |||
| @@ -20,9 +20,19 @@ export function getDb(): Database.Database { | |||
| 20 | db.pragma("foreign_keys = ON"); | 20 | db.pragma("foreign_keys = ON"); |
| 21 | 21 | ||
| 22 | initSchema(db); | 22 | initSchema(db); |
| 23 | runMigrations(db); | ||
| 24 | |||
| 23 | return db; | 25 | return db; |
| 24 | } | 26 | } |
| 25 | 27 | ||
| 28 | function runMigrations(db: Database.Database): void { | ||
| 29 | // v2: add git_branch column to sessions | ||
| 30 | const cols = db.pragma("table_info(sessions)") as { name: string }[]; | ||
| 31 | if (!cols.find((c) => c.name === "git_branch")) { | ||
| 32 | db.exec("ALTER TABLE sessions ADD COLUMN git_branch TEXT"); | ||
| 33 | } | ||
| 34 | } | ||
| 35 | |||
| 26 | export function closeDb() { | 36 | export function closeDb() { |
| 27 | if (db) { | 37 | if (db) { |
| 28 | db.close(); | 38 | db.close(); |
diff --git a/src/main/db/schema.ts b/src/main/db/schema.ts index c2093f9..39ee567 100644 --- a/src/main/db/schema.ts +++ b/src/main/db/schema.ts | |||
| @@ -17,6 +17,7 @@ export function initSchema(db: Database.Database) { | |||
| 17 | phase TEXT NOT NULL DEFAULT 'research', | 17 | phase TEXT NOT NULL DEFAULT 'research', |
| 18 | claude_session_id TEXT, | 18 | claude_session_id TEXT, |
| 19 | permission_mode TEXT NOT NULL DEFAULT 'acceptEdits', | 19 | permission_mode TEXT NOT NULL DEFAULT 'acceptEdits', |
| 20 | git_branch TEXT, | ||
| 20 | created_at INTEGER NOT NULL DEFAULT (unixepoch()), | 21 | created_at INTEGER NOT NULL DEFAULT (unixepoch()), |
| 21 | updated_at INTEGER NOT NULL DEFAULT (unixepoch()) | 22 | updated_at INTEGER NOT NULL DEFAULT (unixepoch()) |
| 22 | ); | 23 | ); |
diff --git a/src/main/db/sessions.ts b/src/main/db/sessions.ts index 684bb9e..3e6352c 100644 --- a/src/main/db/sessions.ts +++ b/src/main/db/sessions.ts | |||
| @@ -11,6 +11,7 @@ export interface Session { | |||
| 11 | phase: Phase; | 11 | phase: Phase; |
| 12 | claude_session_id: string | null; | 12 | claude_session_id: string | null; |
| 13 | permission_mode: PermissionMode; | 13 | permission_mode: PermissionMode; |
| 14 | git_branch: string | null; | ||
| 14 | created_at: number; | 15 | created_at: number; |
| 15 | updated_at: number; | 16 | updated_at: number; |
| 16 | } | 17 | } |
| @@ -52,6 +53,7 @@ export function createSession(projectId: string, name: string): Session { | |||
| 52 | phase: "research", | 53 | phase: "research", |
| 53 | claude_session_id: null, | 54 | claude_session_id: null, |
| 54 | permission_mode: "acceptEdits", | 55 | permission_mode: "acceptEdits", |
| 56 | git_branch: null, | ||
| 55 | created_at: now, | 57 | created_at: now, |
| 56 | updated_at: now, | 58 | updated_at: now, |
| 57 | }; | 59 | }; |
| @@ -59,7 +61,7 @@ export function createSession(projectId: string, name: string): Session { | |||
| 59 | 61 | ||
| 60 | export function updateSession( | 62 | export function updateSession( |
| 61 | id: string, | 63 | id: string, |
| 62 | updates: Partial<Pick<Session, "name" | "phase" | "claude_session_id" | "permission_mode">> | 64 | updates: Partial<Pick<Session, "name" | "phase" | "claude_session_id" | "permission_mode" | "git_branch">> |
| 63 | ): void { | 65 | ): void { |
| 64 | const db = getDb(); | 66 | const db = getDb(); |
| 65 | const sets: string[] = []; | 67 | const sets: string[] = []; |
