UNPKG

ionic-database-builder

Version:

Extended library from database-builder to assist in creating and maintaining SQL commands. Allowing integrate execute commands with SQLite ('@ionic-native/sqlite'), Web Sql, etc. Through the interface injection 'DatabaseCreatorContract' returning an imple

59 lines 8.96 kB
import { DatabaseBuilderError } from 'database-builder'; export class DatabaseManager { constructor(databaseFactory, _platformLoad) { this.databaseFactory = databaseFactory; this._platformLoad = _platformLoad; this._databases = new Map(); } cleanDatabaseName(name) { return name.replace(/([^a-z0-9]+)/gi, '-'); } addDatabaseNameExtension(databaseName) { return `${databaseName}.db`; } databaseInstance(name, version) { const keyDatabaseName = name + version; return this._databases.has(keyDatabaseName) ? this._databases.get(keyDatabaseName) : this.setDatabase(keyDatabaseName, this.createDatabase(this.databaseNameFile(name), version)); } invalidateInstance() { this._databases = new Map(); } setDatabase(keyDatabaseName, promiseDatabase) { if (promiseDatabase) { return this._databases .set(keyDatabaseName, promiseDatabase) .get(keyDatabaseName); } throw new DatabaseBuilderError(`Connection with provider of database cannot be created!`); } createDatabase(name, version) { return new Promise((resolve, reject) => { this._platformLoad.ready() .then(() => { this.databaseFactory.database(name) .subscribe((database) => { this.migrationVersion(database, version) .subscribe(_ => { resolve(database); }, err => { reject(err); }); }, err => { this.catchException(err); reject(err); }); }) .catch(err => { this.catchException(err); reject(err); }); }); } catchException(e) { // tslint:disable-next-line:no-console console.error(e); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UtbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiJDOi9UcmFiYWxob0Zlcm5hbmRvL1Byb2pldG9zL2lvbmljLWRhdGFiYXNlLWJ1aWxkZXIvcHJvamVjdHMvaW9uaWMtZGF0YWJhc2UtYnVpbGRlci9zcmMvIiwic291cmNlcyI6WyJsaWIvdXRpbHMvZGF0YWJhc2UtbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWtCLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJeEUsTUFBTSxPQUFnQixlQUFlO0lBSWpDLFlBQ2MsZUFBd0MsRUFDeEMsYUFBMkI7UUFEM0Isb0JBQWUsR0FBZixlQUFlLENBQXlCO1FBQ3hDLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBSmpDLGVBQVUsR0FBeUMsSUFBSSxHQUFHLEVBQW1DLENBQUM7SUFPdEcsQ0FBQztJQUVNLGlCQUFpQixDQUFDLElBQVk7UUFDakMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFUyx3QkFBd0IsQ0FBQyxZQUFvQjtRQUNuRCxPQUFPLEdBQUcsWUFBWSxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVNLGdCQUFnQixDQUFDLElBQVksRUFBRSxPQUFlO1FBQ2pELE1BQU0sZUFBZSxHQUFXLElBQUksR0FBRyxPQUFPLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksR0FBRyxFQUFtQyxDQUFDO0lBQ2pFLENBQUM7SUFNTyxXQUFXLENBQUMsZUFBdUIsRUFBRSxlQUF3QztRQUNqRixJQUFJLGVBQWUsRUFBRTtZQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVO2lCQUNqQixHQUFHLENBQUMsZUFBZSxFQUFFLGVBQWUsQ0FBQztpQkFDckMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQzdCO1FBQ0QsTUFBTSxJQUFJLG9CQUFvQixDQUFDLHlEQUF5RCxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFZLEVBQUUsT0FBZTtRQUNoRCxPQUFPLElBQUksT0FBTyxDQUFpQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRTtpQkFDckIsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDUCxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7cUJBQzlCLFNBQVMsQ0FBQyxDQUFDLFFBQXdCLEVBQUUsRUFBRTtvQkFDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUM7eUJBQ25DLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTt3QkFDWCxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3RCLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTt3QkFDTCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUNYLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxjQUFjLENBQUMsQ0FBTTtRQUN6QixzQ0FBc0M7UUFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhYmFzZUZhY3RvcnlDb250cmFjdCB9IGZyb20gJy4vZGF0YWJhc2UtZmFjdG9yeS1jb250cmFjdCc7XHJcbmltcG9ydCB7IERhdGFiYXNlT2JqZWN0LCBEYXRhYmFzZUJ1aWxkZXJFcnJvciB9IGZyb20gJ2RhdGFiYXNlLWJ1aWxkZXInO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFBsYXRmb3JtTG9hZCB9IGZyb20gJy4vcGxhdGZvcm0tbG9hZCc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRGF0YWJhc2VNYW5hZ2VyIHtcclxuXHJcbiAgICBwcml2YXRlIF9kYXRhYmFzZXM6IE1hcDxzdHJpbmcsIFByb21pc2U8RGF0YWJhc2VPYmplY3Q+PiA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPERhdGFiYXNlT2JqZWN0Pj4oKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgZGF0YWJhc2VGYWN0b3J5OiBEYXRhYmFzZUZhY3RvcnlDb250cmFjdCxcclxuICAgICAgICBwcm90ZWN0ZWQgX3BsYXRmb3JtTG9hZDogUGxhdGZvcm1Mb2FkXHJcbiAgICApIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsZWFuRGF0YWJhc2VOYW1lKG5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiBuYW1lLnJlcGxhY2UoLyhbXmEtejAtOV0rKS9naSwgJy0nKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYWRkRGF0YWJhc2VOYW1lRXh0ZW5zaW9uKGRhdGFiYXNlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gYCR7ZGF0YWJhc2VOYW1lfS5kYmA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGRhdGFiYXNlSW5zdGFuY2UobmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIpOiBQcm9taXNlPERhdGFiYXNlT2JqZWN0PiB7XHJcbiAgICAgICAgY29uc3Qga2V5RGF0YWJhc2VOYW1lOiBzdHJpbmcgPSBuYW1lICsgdmVyc2lvbjtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YWJhc2VzLmhhcyhrZXlEYXRhYmFzZU5hbWUpXHJcbiAgICAgICAgICAgID8gdGhpcy5fZGF0YWJhc2VzLmdldChrZXlEYXRhYmFzZU5hbWUpXHJcbiAgICAgICAgICAgIDogdGhpcy5zZXREYXRhYmFzZShrZXlEYXRhYmFzZU5hbWUsXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZURhdGFiYXNlKHRoaXMuZGF0YWJhc2VOYW1lRmlsZShuYW1lKSwgdmVyc2lvbikpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBpbnZhbGlkYXRlSW5zdGFuY2UoKSB7XHJcbiAgICAgICAgdGhpcy5fZGF0YWJhc2VzID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8RGF0YWJhc2VPYmplY3Q+PigpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhYnN0cmFjdCBkYXRhYmFzZU5hbWVGaWxlKGRhdGFiYXNlTmFtZT86IHN0cmluZyk6IHN0cmluZztcclxuXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgbWlncmF0aW9uVmVyc2lvbihkYXRhYmFzZTogRGF0YWJhc2VPYmplY3QsIHZlcnNpb246IG51bWJlcik6IE9ic2VydmFibGU8Ym9vbGVhbj47XHJcblxyXG4gICAgcHJpdmF0ZSBzZXREYXRhYmFzZShrZXlEYXRhYmFzZU5hbWU6IHN0cmluZywgcHJvbWlzZURhdGFiYXNlOiBQcm9taXNlPERhdGFiYXNlT2JqZWN0Pik6IFByb21pc2U8RGF0YWJhc2VPYmplY3Q+IHtcclxuICAgICAgICBpZiAocHJvbWlzZURhdGFiYXNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhYmFzZXNcclxuICAgICAgICAgICAgICAgIC5zZXQoa2V5RGF0YWJhc2VOYW1lLCBwcm9taXNlRGF0YWJhc2UpXHJcbiAgICAgICAgICAgICAgICAuZ2V0KGtleURhdGFiYXNlTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IG5ldyBEYXRhYmFzZUJ1aWxkZXJFcnJvcihgQ29ubmVjdGlvbiB3aXRoIHByb3ZpZGVyIG9mIGRhdGFiYXNlIGNhbm5vdCBiZSBjcmVhdGVkIWApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlRGF0YWJhc2UobmFtZTogc3RyaW5nLCB2ZXJzaW9uOiBudW1iZXIpOiBQcm9taXNlPERhdGFiYXNlT2JqZWN0PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPERhdGFiYXNlT2JqZWN0PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BsYXRmb3JtTG9hZC5yZWFkeSgpXHJcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhYmFzZUZhY3RvcnkuZGF0YWJhc2UobmFtZSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoZGF0YWJhc2U6IERhdGFiYXNlT2JqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1pZ3JhdGlvblZlcnNpb24oZGF0YWJhc2UsIHZlcnNpb24pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShfID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShkYXRhYmFzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhdGNoRXhjZXB0aW9uKGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYXRjaEV4Y2VwdGlvbihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjYXRjaEV4Y2VwdGlvbihlOiBhbnkpIHtcclxuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tY29uc29sZVxyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICB9XHJcbn1cclxuIl19