UNPKG

@n8n/typeorm

Version:

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

78 lines (76 loc) 2.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LibSqlDriver = void 0; const AbstractSqliteDriver_1 = require("../sqlite-abstract/AbstractSqliteDriver"); const LibSqlQueryRunner_1 = require("./LibSqlQueryRunner"); const PlatformTools_1 = require("../../platform/PlatformTools"); const DriverPackageNotInstalledError_1 = require("../../error/DriverPackageNotInstalledError"); class LibSqlDriver extends AbstractSqliteDriver_1.AbstractSqliteDriver { constructor(connection) { super(connection); this.database = this.options.database; try { this.sqlite = PlatformTools_1.PlatformTools.load("libsql"); } catch (e) { throw new DriverPackageNotInstalledError_1.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_1.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; } } exports.LibSqlDriver = LibSqlDriver; //# sourceMappingURL=LibSqlDriver.js.map