ditto/src/db/adapters/DittoPostgres.ts
2024-05-08 11:46:27 -05:00

37 lines
1.1 KiB
TypeScript

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<DittoTables> | undefined;
// deno-lint-ignore require-await
static async getInstance(): Promise<Kysely<DittoTables>> {
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<unknown>) {
return new PostgresIntrospector(db);
},
createQueryCompiler() {
return new PostgresQueryCompiler();
},
},
});
}
return this.db;
}
}