mirror of
https://gitlab.com/soapbox-pub/ditto.git
synced 2025-12-06 11:29:46 +00:00
35 lines
1,012 B
TypeScript
35 lines
1,012 B
TypeScript
import { Kysely, PostgresAdapter, PostgresIntrospector, PostgresQueryCompiler } from 'kysely';
|
|
import { PostgreSQLDriver } from 'kysely_deno_postgres';
|
|
|
|
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'),
|
|
});
|
|
},
|
|
createIntrospector(db: Kysely<unknown>) {
|
|
return new PostgresIntrospector(db);
|
|
},
|
|
createQueryCompiler() {
|
|
return new PostgresQueryCompiler();
|
|
},
|
|
},
|
|
});
|
|
}
|
|
|
|
return this.db;
|
|
}
|
|
}
|