26 lines
744 B
TypeScript
26 lines
744 B
TypeScript
|
import { Kysely, ParseJSONResultsPlugin, SqliteDialect } from "kysely";
|
||
|
import SqliteDatabase from "better-sqlite3";
|
||
|
import type { DB } from "dbtype/types";
|
||
|
|
||
|
export function createSqliteDialect() {
|
||
|
const url = process.env.DATABASE_URL;
|
||
|
if (!url) {
|
||
|
throw new Error("DATABASE_URL is not set");
|
||
|
}
|
||
|
const db = new SqliteDatabase(url);
|
||
|
return new SqliteDialect({
|
||
|
database: db,
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// Create a new Kysely instance with a new SqliteDatabase instance
|
||
|
let kysely: Kysely<DB> | null = null;
|
||
|
export function getKysely() {
|
||
|
if (!kysely) {
|
||
|
kysely = new Kysely<DB>({
|
||
|
dialect: createSqliteDialect(),
|
||
|
// plugins: [new ParseJSONResultsPlugin()],
|
||
|
});
|
||
|
}
|
||
|
return kysely;
|
||
|
}
|