summaryrefslogtreecommitdiffhomepage
path: root/packages/opencode/src/session/session.sql.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/opencode/src/session/session.sql.ts')
-rw-r--r--packages/opencode/src/session/session.sql.ts20
1 files changed, 20 insertions, 0 deletions
diff --git a/packages/opencode/src/session/session.sql.ts b/packages/opencode/src/session/session.sql.ts
index 189a59687..35ed8fdda 100644
--- a/packages/opencode/src/session/session.sql.ts
+++ b/packages/opencode/src/session/session.sql.ts
@@ -1,6 +1,7 @@
import { sqliteTable, text, integer, index, primaryKey } from "drizzle-orm/sqlite-core"
import { ProjectTable } from "../project/project.sql"
import type { MessageV2 } from "./message-v2"
+import type { SessionEntry } from "../v2/session-entry"
import type { Snapshot } from "../snapshot"
import type { Permission } from "../permission"
import type { ProjectID } from "../project/schema"
@@ -94,6 +95,25 @@ export const TodoTable = sqliteTable(
],
)
+export const SessionEntryTable = sqliteTable(
+ "session_entry",
+ {
+ id: text().$type<SessionEntry.ID>().primaryKey(),
+ session_id: text()
+ .$type<SessionID>()
+ .notNull()
+ .references(() => SessionTable.id, { onDelete: "cascade" }),
+ type: text().$type<SessionEntry.Type>().notNull(),
+ ...Timestamps,
+ data: text({ mode: "json" }).notNull().$type<Omit<SessionEntry.Entry, "type" | "id">>(),
+ },
+ (table) => [
+ index("session_entry_session_idx").on(table.session_id),
+ index("session_entry_session_type_idx").on(table.session_id, table.type),
+ index("session_entry_time_created_idx").on(table.time_created),
+ ],
+)
+
export const PermissionTable = sqliteTable("permission", {
project_id: text()
.primaryKey()