49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
|
/// The MIT License (MIT)
|
||
|
/// Copyright (c) 2023 Alex Gleason
|
||
|
/// Copyright (c) 2022 Sami Koskimäki
|
||
|
/// https://gitlab.com/soapbox-pub/kysely-deno-sqlite
|
||
|
|
||
|
import {
|
||
|
type DatabaseIntrospector,
|
||
|
type Dialect,
|
||
|
type DialectAdapter,
|
||
|
type Driver,
|
||
|
Kysely,
|
||
|
type QueryCompiler,
|
||
|
SqliteAdapter,
|
||
|
SqliteIntrospector,
|
||
|
SqliteQueryCompiler,
|
||
|
} from 'kysely';
|
||
|
|
||
|
import { DenoSqliteDriver } from './kysely-sqlite-driver.ts';
|
||
|
|
||
|
import type { DenoSqliteDialectConfig } from './deno-sqlite-dialect-config.ts';
|
||
|
|
||
|
class DenoSqliteDialect implements Dialect {
|
||
|
readonly #config: DenoSqliteDialectConfig;
|
||
|
|
||
|
constructor(config: DenoSqliteDialectConfig) {
|
||
|
this.#config = Object.freeze({ ...config });
|
||
|
}
|
||
|
|
||
|
createDriver(): Driver {
|
||
|
return new DenoSqliteDriver(this.#config);
|
||
|
}
|
||
|
|
||
|
createQueryCompiler(): QueryCompiler {
|
||
|
return new SqliteQueryCompiler();
|
||
|
}
|
||
|
|
||
|
createAdapter(): DialectAdapter {
|
||
|
return new SqliteAdapter();
|
||
|
}
|
||
|
|
||
|
// deno-lint-ignore no-explicit-any
|
||
|
createIntrospector(db: Kysely<any>): DatabaseIntrospector {
|
||
|
return new SqliteIntrospector(db);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export { DenoSqliteDialect };
|
||
|
|
||
|
|