import type { Env } from 'wildebeest/backend/src/types/env' import d1 from './d1' import neon from './neon' export interface Result { results?: T[] success: boolean error?: string meta: any } export interface Database { prepare(query: string): PreparedStatement dump(): Promise batch(statements: PreparedStatement[]): Promise[]> exec(query: string): Promise> qb: QueryBuilder client: string } export interface PreparedStatement { bind(...values: any[]): PreparedStatement first(colName?: string): Promise run(): Promise> all(): Promise> raw(): Promise } export interface QueryBuilder { jsonExtract(obj: string, prop: string): string jsonExtractIsNull(obj: string, prop: string): string set(array: string): string epoch(): string insertOrIgnore(q: string): string psqlOnly(raw: string): string jsonArray(r: string): string jsonSet(obj: string, field: string, value: string): string } export async function getDatabase(env: Pick): Promise { if (env.NEON_DATABASE_URL !== undefined) { return neon(env) } return d1(env) }