typeorm
Version:
Data-Mapper ORM for TypeScript, ES7, ES6, ES5. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, MongoDB databases.
110 lines (108 loc) • 4.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NativescriptDriver = void 0;
var tslib_1 = require("tslib");
var AbstractSqliteDriver_1 = require("../sqlite-abstract/AbstractSqliteDriver");
var NativescriptQueryRunner_1 = require("./NativescriptQueryRunner");
var DriverOptionNotSetError_1 = require("../../error/DriverOptionNotSetError");
var DriverPackageNotInstalledError_1 = require("../../error/DriverPackageNotInstalledError");
/**
* Organizes communication with sqlite DBMS within Nativescript.
*/
var NativescriptDriver = /** @class */ (function (_super) {
tslib_1.__extends(NativescriptDriver, _super);
// -------------------------------------------------------------------------
// Constructor
// -------------------------------------------------------------------------
function NativescriptDriver(connection) {
var _this = _super.call(this, connection) || this;
_this.connection = connection;
_this.options = connection.options;
_this.database = _this.options.database;
_this.driver = _this.options.driver;
// validate options to make sure everything is set
if (!_this.options.database) {
throw new DriverOptionNotSetError_1.DriverOptionNotSetError("database");
}
// load sqlite package
_this.loadDependencies();
return _this;
}
// -------------------------------------------------------------------------
// Public Methods
// -------------------------------------------------------------------------
/**
* Closes connection with database.
*/
NativescriptDriver.prototype.disconnect = function () {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _this = this;
return tslib_1.__generator(this, function (_a) {
return [2 /*return*/, new Promise(function (ok, fail) {
_this.queryRunner = undefined;
_this.databaseConnection.close().then(ok).catch(fail);
})];
});
});
};
/**
* Creates a query runner used to execute database queries.
*/
NativescriptDriver.prototype.createQueryRunner = function (mode) {
if (!this.queryRunner) {
this.queryRunner = new NativescriptQueryRunner_1.NativescriptQueryRunner(this);
}
return this.queryRunner;
};
NativescriptDriver.prototype.normalizeType = function (column) {
if (column.type === Buffer) {
return "blob";
}
return _super.prototype.normalizeType.call(this, column);
};
// -------------------------------------------------------------------------
// Protected Methods
// -------------------------------------------------------------------------
/**
* Creates connection with the database.
*/
NativescriptDriver.prototype.createDatabaseConnection = function () {
var _this = this;
return new Promise(function (ok, fail) {
var options = Object.assign({}, {
readOnly: _this.options.readOnly,
key: _this.options.key,
multithreading: _this.options.multithreading,
migrate: _this.options.migrate,
iosFlags: _this.options.iosFlags,
androidFlags: _this.options.androidFlags,
}, _this.options.extra || {});
new _this.sqlite(_this.options.database, options, function (err, db) {
if (err)
return fail(err);
// use object mode to work with TypeORM
db.resultType(_this.sqlite.RESULTSASOBJECT);
// we need to enable foreign keys in sqlite to make sure all foreign key related features
// working properly. this also makes onDelete work with sqlite.
db.execSQL("PRAGMA foreign_keys = ON;", [], function (err, result) {
if (err)
return fail(err);
// We are all set
ok(db);
});
});
});
};
/**
* If driver dependency is not given explicitly, then try to load it via "require".
*/
NativescriptDriver.prototype.loadDependencies = function () {
this.sqlite = this.driver;
if (!this.driver) {
throw new DriverPackageNotInstalledError_1.DriverPackageNotInstalledError("Nativescript", "nativescript-sqlite");
}
};
return NativescriptDriver;
}(AbstractSqliteDriver_1.AbstractSqliteDriver));
exports.NativescriptDriver = NativescriptDriver;
//# sourceMappingURL=NativescriptDriver.js.map