Fix db types

This commit is contained in:
Jared Miller 2026-01-31 12:08:23 -05:00
parent 0a17b61bf3
commit b28283bf34
Signed by: shmup
GPG key ID: 22B5C6D66A38B06C

View file

@ -3,6 +3,17 @@
import { Database } from "bun:sqlite"; import { Database } from "bun:sqlite";
import type { Device, OutputLog, PromptData, Session } from "./types"; import type { Device, OutputLog, PromptData, Session } from "./types";
// Raw row returned from SQLite before JSON parsing
interface RawPromptRow {
id: number;
session_id: number;
created_at: number;
prompt_text: string;
response: string | null;
responded_at: number | null;
prompt_json: string | null;
}
// Extend Prompt interface to include prompt_json field // Extend Prompt interface to include prompt_json field
export interface Prompt { export interface Prompt {
id: number; id: number;
@ -58,9 +69,12 @@ function runMigrations(): void {
for (const migration of migrations) { for (const migration of migrations) {
try { try {
db.exec(migration); db.exec(migration);
} catch (error: any) { } catch (error: unknown) {
// Ignore "duplicate column" errors - column already exists // Ignore "duplicate column" errors - column already exists
if (!error.message?.includes("duplicate column")) { if (
!(error instanceof Error) ||
!error.message?.includes("duplicate column")
) {
throw error; throw error;
} }
} }
@ -221,7 +235,7 @@ export function createPrompt(
promptText, promptText,
promptJson ?? null, promptJson ?? null,
); );
const prompt = row as any; const prompt = row as RawPromptRow;
// Parse prompt_json if present // Parse prompt_json if present
if (prompt.prompt_json) { if (prompt.prompt_json) {
@ -239,7 +253,7 @@ export function getPrompt(promptId: number): Prompt | null {
const row = getPromptStmt.get(promptId); const row = getPromptStmt.get(promptId);
if (!row) return null; if (!row) return null;
const prompt = row as any; const prompt = row as RawPromptRow;
// Parse prompt_json if present // Parse prompt_json if present
if (prompt.prompt_json) { if (prompt.prompt_json) {
@ -258,9 +272,9 @@ export function respondToPrompt(promptId: number, response: string): void {
} }
export function getPendingPrompts(): Prompt[] { export function getPendingPrompts(): Prompt[] {
const rows = getPendingPromptsStmt.all(); const rows = getPendingPromptsStmt.all() as RawPromptRow[];
return rows.map((row: any) => { return rows.map((row) => {
// Parse prompt_json if present // Parse prompt_json if present
if (row.prompt_json) { if (row.prompt_json) {
try { try {