This commit is contained in:
Dax Raad
2026-01-27 15:33:44 -05:00
parent f40685ab13
commit 63e38555c9
9 changed files with 83 additions and 66 deletions
+12 -9
View File
@@ -3,6 +3,10 @@ import { ProjectTable } from "../project/project.sql"
import type { MessageV2 } from "./message-v2"
import type { Snapshot } from "@/snapshot"
import type { PermissionNext } from "@/permission/next"
import { Database } from "@/storage/db"
type PartData = Omit<MessageV2.Part, "id" | "sessionID" | "messageID">
type InfoData = Omit<MessageV2.Info, "id" | "sessionID">
export const SessionTable = sqliteTable(
"session",
@@ -21,13 +25,9 @@ export const SessionTable = sqliteTable(
summary_deletions: integer(),
summary_files: integer(),
summary_diffs: text({ mode: "json" }).$type<Snapshot.FileDiff[]>(),
revert_message_id: text(),
revert_part_id: text(),
revert_snapshot: text(),
revert_diff: text(),
revert: text({ mode: "json" }).$type<{ messageID: string; partID?: string; snapshot?: string; diff?: string }>(),
permission: text({ mode: "json" }).$type<PermissionNext.Ruleset>(),
time_created: integer().notNull(),
time_updated: integer().notNull(),
...Database.Timestamps,
time_compacting: integer(),
time_archived: integer(),
},
@@ -41,8 +41,8 @@ export const MessageTable = sqliteTable(
session_id: text()
.notNull()
.references(() => SessionTable.id, { onDelete: "cascade" }),
created_at: integer().notNull(),
data: text({ mode: "json" }).notNull().$type<MessageV2.Info>(),
...Database.Timestamps,
data: text({ mode: "json" }).notNull().$type<InfoData>(),
},
(table) => [index("message_session_idx").on(table.session_id)],
)
@@ -55,7 +55,8 @@ export const PartTable = sqliteTable(
.notNull()
.references(() => MessageTable.id, { onDelete: "cascade" }),
session_id: text().notNull(),
data: text({ mode: "json" }).notNull().$type<MessageV2.Part>(),
...Database.Timestamps,
data: text({ mode: "json" }).notNull().$type<PartData>(),
},
(table) => [index("part_message_idx").on(table.message_id), index("part_session_idx").on(table.session_id)],
)
@@ -71,6 +72,7 @@ export const TodoTable = sqliteTable(
status: text().notNull(),
priority: text().notNull(),
position: integer().notNull(),
...Database.Timestamps,
},
(table) => [primaryKey({ columns: [table.session_id, table.id] }), index("todo_session_idx").on(table.session_id)],
)
@@ -79,5 +81,6 @@ export const PermissionTable = sqliteTable("permission", {
project_id: text()
.primaryKey()
.references(() => ProjectTable.id, { onDelete: "cascade" }),
...Database.Timestamps,
data: text({ mode: "json" }).notNull().$type<PermissionNext.Ruleset>(),
})