UNPKG

@n8n/typeorm

Version:

Data-Mapper ORM for TypeScript, ES7, ES6, ES5. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, MongoDB databases.

74 lines (72 loc) 2.55 kB
import { AbstractSqliteDriver } from "../sqlite-abstract/AbstractSqliteDriver"; import { LibSqlQueryRunner } from "./LibSqlQueryRunner"; import { PlatformTools } from "../../platform/PlatformTools"; import { DriverPackageNotInstalledError } from "../../error/DriverPackageNotInstalledError"; export class LibSqlDriver extends AbstractSqliteDriver { constructor(connection) { super(connection); this.database = this.options.database; try { this.sqlite = PlatformTools.load("libsql"); } catch (e) { throw new DriverPackageNotInstalledError("SQLite", "sqlite3"); } } /** * Closes connection with database. */ async disconnect() { return new Promise((ok, fail) => { try { this.queryRunner = undefined; this.databaseConnection?.close(); this.databaseConnection = undefined; ok(); } catch (error) { fail(error); } }); } /** * Creates a query runner used to execute database queries. */ createQueryRunner() { if (!this.queryRunner) this.queryRunner = new LibSqlQueryRunner(this); return this.queryRunner; } createGeneratedMap(metadata, insertResult, entityIndex, entityNum) { if (typeof insertResult === "bigint") insertResult = Number(insertResult); return super.createGeneratedMap(metadata, insertResult, entityIndex, entityNum); } normalizeType(column) { return column.type === Buffer ? "blob" : super.normalizeType(column); } // ------------------------------------------------------------------------- // Protected Methods // ------------------------------------------------------------------------- /** * Creates connection with the database. */ async createDatabaseConnection() { const client = this.sqlite.createClient({ url: `file:${this.database}`, intMode: "number", }); if (this.options.enableWAL) { await client.execute("PRAGMA journal_mode = WAL"); } /* // we need to enable foreign keys in libsql to make sure all foreign key related features working properly. this also makes onDelete work with libsql. */ await client.execute("PRAGMA foreign_keys = ON"); return client; } } //# sourceMappingURL=LibSqlDriver.js.map