import { sql as pgsql } from "bun"; import { Database as SQLiteDB } from "bun:sqlite"; const dbType = process.env.DB_TYPE; const sqlite = () => { const db = new SQLiteDB(process.env.DB_URL || ":memory:"); function toSql(strings: TemplateStringsArray, values: any[]) { let sql = strings[0] || ""; for (let i = 0; i < values.length; i++) { sql += "?" + (strings[i + 1] || ""); } return sql; } return { all: async (strings: TemplateStringsArray, ...params: any[]) => { const sql = toSql(strings, params); return db.query(sql).all(...params) as T; }, get: async (strings: TemplateStringsArray, ...params: any[]) => { const sql = toSql(strings, params); return db.query(sql).get(...params) as T; }, run: async (strings: TemplateStringsArray, ...params: any[]) => { const sql = toSql(strings, params); return db.query(sql).run(...params) as T; }, }; }; const postgres = () => { return { all: async (strings: TemplateStringsArray, ...values: any[]) => await pgsql(strings, ...values) as T, get: async (strings: TemplateStringsArray, ...values: any[]) => (await pgsql(strings, ...values))[0] as T, run: async (strings: TemplateStringsArray, ...values: any[]) => await pgsql(strings, ...values) as T, }; }; export const db = dbType === "sqlite" ? sqlite() : postgres();