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