From 4ec629305461ec6cf15ded37fd591da6bf7e9f16 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sun, 1 Feb 2026 20:31:02 -0500 Subject: [PATCH] fix: type errors in console-core and session - Fix ExtractTablesWithRelations type compatibility with drizzle-orm beta - Migrate Session.list() and Session.children() from Storage to SQLite --- packages/console/core/src/drizzle/index.ts | 3 +-- packages/opencode/src/session/index.ts | 27 +++++++++++----------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/console/core/src/drizzle/index.ts b/packages/console/core/src/drizzle/index.ts index a9137b1f1f..d3a4b63bf3 100644 --- a/packages/console/core/src/drizzle/index.ts +++ b/packages/console/core/src/drizzle/index.ts @@ -4,7 +4,6 @@ export * from "drizzle-orm" import { Client } from "@planetscale/database" import { MySqlTransaction, type MySqlTransactionConfig } from "drizzle-orm/mysql-core" -import type { ExtractTablesWithRelations } from "drizzle-orm" import type { PlanetScalePreparedQueryHKT, PlanetscaleQueryResultHKT } from "drizzle-orm/planetscale-serverless" import { Context } from "../context" import { memo } from "../util/memo" @@ -14,7 +13,7 @@ export namespace Database { PlanetscaleQueryResultHKT, PlanetScalePreparedQueryHKT, Record, - ExtractTablesWithRelations> + any > const client = memo(() => { diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index 34b0e57b3a..1a8831d1dd 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -10,7 +10,7 @@ import { Flag } from "../flag/flag" import { Identifier } from "../id/id" import { Installation } from "../installation" -import { Database, NotFoundError, eq } from "../storage/db" +import { Database, NotFoundError, eq, and } from "../storage/db" import { SessionTable, MessageTable, PartTable } from "./session.sql" import { Storage } from "@/storage/storage" import { Log } from "../util/log" @@ -505,23 +505,24 @@ export namespace Session { export function* list() { const project = Instance.project - for (const item of await Storage.list(["session", project.id])) { - const session = await Storage.read(item).catch(() => undefined) - if (!session) continue - yield session + const rows = Database.use((db) => + db.select().from(SessionTable).where(eq(SessionTable.project_id, project.id)).all(), + ) + for (const row of rows) { + yield fromRow(row) } } export const children = fn(Identifier.schema("session"), async (parentID) => { const project = Instance.project - const result = [] as Session.Info[] - for (const item of await Storage.list(["session", project.id])) { - const session = await Storage.read(item).catch(() => undefined) - if (!session) continue - if (session.parentID !== parentID) continue - result.push(session) - } - return result + const rows = Database.use((db) => + db + .select() + .from(SessionTable) + .where(and(eq(SessionTable.project_id, project.id), eq(SessionTable.parent_id, parentID))) + .all(), + ) + return rows.map(fromRow) }) export const remove = fn(Identifier.schema("session"), async (sessionID) => {