28 lines
1.1 KiB
JavaScript
28 lines
1.1 KiB
JavaScript
import { CompiledQuery } from 'kysely';
|
|
import { AbstractSqlConnection } from '../../AbstractSqlConnection.js';
|
|
export class BaseSqliteConnection extends AbstractSqlConnection {
|
|
createKyselyDialect(options) {
|
|
throw new Error(
|
|
'No SQLite dialect configured. Pass a Kysely dialect via the `driverOptions` config option, ' +
|
|
'e.g. `new NodeSqliteDialect(...)` for node:sqlite or a custom dialect for other libraries.',
|
|
);
|
|
}
|
|
async connect(options) {
|
|
await super.connect(options);
|
|
await this.getClient().executeQuery(CompiledQuery.raw('pragma foreign_keys = on'));
|
|
await this.attachDatabases();
|
|
}
|
|
async attachDatabases() {
|
|
const attachDatabases = this.config.get('attachDatabases');
|
|
if (!attachDatabases?.length) {
|
|
return;
|
|
}
|
|
const { fs } = await import('@mikro-orm/core/fs-utils');
|
|
const baseDir = this.config.get('baseDir');
|
|
for (const db of attachDatabases) {
|
|
const path = fs.absolutePath(db.path, baseDir);
|
|
await this.execute(`attach database '${path}' as ${this.platform.quoteIdentifier(db.name)}`);
|
|
}
|
|
}
|
|
}
|