import { Kysely, PostgresAdapter, PostgresIntrospector, PostgresQueryCompiler } from 'kysely'; import { PostgreSQLDriver } from 'kysely_deno_postgres'; import { Conf } from '@/config.ts'; import { DittoTables } from '@/db/DittoTables.ts'; export class DittoPostgres { static db: Kysely | undefined; // deno-lint-ignore require-await static async getInstance(): Promise> { if (!this.db) { this.db = new Kysely({ dialect: { createAdapter() { return new PostgresAdapter(); }, // @ts-ignore mismatched kysely versions probably createDriver() { return new PostgreSQLDriver( { connectionString: Deno.env.get('DATABASE_URL') }, Conf.pg.poolSize, ); }, createIntrospector(db: Kysely) { return new PostgresIntrospector(db); }, createQueryCompiler() { return new PostgresQueryCompiler(); }, }, }); } return this.db; } }