import { Context } from "hono"; const getJsonObjectValue = ( value: string | any ): T | null => { if (value == undefined || value == null) { return null; } if (typeof value === "object") { return value as T; } if (typeof value !== "string") { return null; } try { return JSON.parse(value) as T; } catch (e) { console.error(`GetJsonValue: Failed to parse ${value}`, e); } return null; } export const getJsonSetting = async ( c: Context, key: string ): Promise => { const value = await getSetting(c, key); if (!value) { return null; } try { return JSON.parse(value) as T; } catch (e) { console.error(`GetJsonSetting: Failed to parse ${key}`, e); } return null; } export const getSetting = async ( c: Context, key: string ): Promise => { try { const value = await c.env.DB.prepare( `SELECT value FROM settings where key = ?` ).bind(key).first("value"); return value; } catch (error) { console.error(`GetSetting: Failed to get ${key}`, error); } return null; } export const saveSetting = async ( c: Context, key: string, value: string ) => { await c.env.DB.prepare( `INSERT INTO settings (key, value) VALUES (?, ?)` + ` ON CONFLICT(key) DO UPDATE SET value = ?, updated_at = datetime('now')` ).bind(key, value, value).run(); return true; } export default { getJsonObjectValue, getJsonSetting, getSetting, saveSetting, }