@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
JavaScript
;
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