UNPKG

@synerty/vortexjs

Version:

Custom observable data serialisation and routing based on Angular 2+

46 lines 6.05 kB
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