/** JSONB from node-pg may already be an object; SQLite leftovers may be strings. */ export function parseJsonObject(value: unknown): Record { if (value && typeof value === "object" && !Array.isArray(value)) { return value as Record } if (typeof value === "string" && value.trim()) { try { const parsed = JSON.parse(value) as unknown if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) { return parsed as Record } } catch { /* ignore */ } } return {} } export function parseJsonArray(value: unknown): unknown[] { if (Array.isArray(value)) return value if (typeof value === "string" && value.trim()) { try { const parsed = JSON.parse(value) as unknown if (Array.isArray(parsed)) return parsed } catch { /* ignore */ } } return [] } export function toJsonb(value: unknown): unknown { if (value == null) return null if (typeof value === "string") { try { return JSON.parse(value) as unknown } catch { return value } } return value }