@synerty/vortexjs
Version:
Custom observable data serialisation and routing based on Angular 2+
46 lines • 6.05 kB
JavaScript
import { assert } from "../UtilMisc";
export function random() {
const min = 0;
const max = 150;
return Math.floor(Math.random() * (max - min + 1) + min);
}
export class SqlApiABC {
dbName;
dbSchema;
db;
schemaInstalled = false;
openInProgressPromise = null;
constructor(dbName, dbSchema) {
this.dbName = dbName;
this.dbSchema = dbSchema;
}
async open() {
if (this.openInProgressPromise != null)
return this.openInProgressPromise;
this.openInProgressPromise = this._openDb()
.then(() => (this.openInProgressPromise = null))
.catch((e) => {
this.openInProgressPromise = null;
throw e;
});
return this.openInProgressPromise;
}
async execute(executeData) {
await this.transaction(executeData, false);
}
async query(executeData) {
// noinspection UnnecessaryLocalVariableJS
const data = await this.transaction([executeData], true);
return data;
}
async installSchema() {
if (this.schemaInstalled) {
return;
}
assert(this.dbSchema.length === 1, "We only accept one SQL statement");
// Open Transaction promise;
await this.execute([{ sql: this.dbSchema[0] }]);
this.schemaInstalled = true;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsLWFwaS1hYmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvdm9ydGV4L3N0b3JhZ2UtYXBpL3NxbC1hcGktYWJjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFPckMsTUFBTSxVQUFVLE1BQU07SUFDbEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ2hCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFDRCxNQUFNLE9BQWdCLFNBQVM7SUFNYjtJQUNBO0lBTkosRUFBRSxDQUFNO0lBQ1IsZUFBZSxHQUFZLEtBQUssQ0FBQztJQUNuQyxxQkFBcUIsR0FBeUIsSUFBSSxDQUFDO0lBRTNELFlBQ2MsTUFBYyxFQUNkLFFBQWtCO1FBRGxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQzdCLENBQUM7SUFFSixLQUFLLENBQUMsSUFBSTtRQUNOLElBQUksSUFBSSxDQUFDLHFCQUFxQixJQUFJLElBQUk7WUFDbEMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFFdEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7YUFDdEMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxDQUFDO2FBQy9DLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1QsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztZQUNsQyxNQUFNLENBQUMsQ0FBQztRQUNaLENBQUMsQ0FBQyxDQUFDO1FBRVAsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDdEMsQ0FBQztJQU1ELEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBNkI7UUFDdkMsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUEyQjtRQUNuQywwQ0FBMEM7UUFDMUMsTUFBTSxJQUFJLEdBQVEsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDOUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQVNTLEtBQUssQ0FBQyxhQUFhO1FBQ3pCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUN0QixPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLGtDQUFrQyxDQUFDLENBQUM7UUFDdkUsNEJBQTRCO1FBQzVCLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDaEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0IH0gZnJvbSBcIi4uL1V0aWxNaXNjXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3FsRXhlY3V0ZURhdGEge1xuICAgIHNxbDogc3RyaW5nO1xuICAgIGJpbmRQYXJhbXM/OiBhbnlbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbSgpOiBudW1iZXIge1xuICAgIGNvbnN0IG1pbiA9IDA7XG4gICAgY29uc3QgbWF4ID0gMTUwO1xuICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkgKyBtaW4pO1xufVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNxbEFwaUFCQyB7XG4gICAgcHJvdGVjdGVkIGRiOiBhbnk7XG4gICAgcHJvdGVjdGVkIHNjaGVtYUluc3RhbGxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgb3BlbkluUHJvZ3Jlc3NQcm9taXNlOiBQcm9taXNlPHZvaWQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBkYk5hbWU6IHN0cmluZyxcbiAgICAgICAgcHJvdGVjdGVkIGRiU2NoZW1hOiBzdHJpbmdbXVxuICAgICkge31cblxuICAgIGFzeW5jIG9wZW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wZW5JblByb2dyZXNzUHJvbWlzZSAhPSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMub3BlbkluUHJvZ3Jlc3NQcm9taXNlO1xuXG4gICAgICAgIHRoaXMub3BlbkluUHJvZ3Jlc3NQcm9taXNlID0gdGhpcy5fb3BlbkRiKClcbiAgICAgICAgICAgIC50aGVuKCgpID0+ICh0aGlzLm9wZW5JblByb2dyZXNzUHJvbWlzZSA9IG51bGwpKVxuICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuSW5Qcm9ncmVzc1Byb21pc2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuSW5Qcm9ncmVzc1Byb21pc2U7XG4gICAgfVxuXG4gICAgYWJzdHJhY3QgaXNPcGVuKCk6IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgICBhYnN0cmFjdCBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+O1xuXG4gICAgYXN5bmMgZXhlY3V0ZShleGVjdXRlRGF0YTogU3FsRXhlY3V0ZURhdGFbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uKGV4ZWN1dGVEYXRhLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgcXVlcnkoZXhlY3V0ZURhdGE6IFNxbEV4ZWN1dGVEYXRhKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgICAgICAvLyBub2luc3BlY3Rpb24gVW5uZWNlc3NhcnlMb2NhbFZhcmlhYmxlSlNcbiAgICAgICAgY29uc3QgZGF0YTogYW55ID0gYXdhaXQgdGhpcy50cmFuc2FjdGlvbihbZXhlY3V0ZURhdGFdLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9vcGVuRGIoKTogUHJvbWlzZTx2b2lkPjtcblxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCB0cmFuc2FjdGlvbihcbiAgICAgICAgZXhlY3V0ZURhdGE6IFNxbEV4ZWN1dGVEYXRhW10sXG4gICAgICAgIGlzUXVlcnk6IGJvb2xlYW5cbiAgICApOiBQcm9taXNlPGFueVtdIHwgbnVsbD47XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgaW5zdGFsbFNjaGVtYSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKHRoaXMuc2NoZW1hSW5zdGFsbGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgYXNzZXJ0KHRoaXMuZGJTY2hlbWEubGVuZ3RoID09PSAxLCBcIldlIG9ubHkgYWNjZXB0IG9uZSBTUUwgc3RhdGVtZW50XCIpO1xuICAgICAgICAvLyBPcGVuIFRyYW5zYWN0aW9uIHByb21pc2U7XG4gICAgICAgIGF3YWl0IHRoaXMuZXhlY3V0ZShbeyBzcWw6IHRoaXMuZGJTY2hlbWFbMF0gfV0pO1xuICAgICAgICB0aGlzLnNjaGVtYUluc3RhbGxlZCA9IHRydWU7XG4gICAgfVxufVxuIl19