UNPKG

yalento

Version:

An awesome integration of Google Firebase for Angular and Node

112 lines (111 loc) 3.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Select = void 0; const rxjs_1 = require("rxjs"); const operators_1 = require("rxjs/operators"); class Select { constructor(subject) { this._subscriptions = []; this.subject = subject; this.paginator = subject.getPaginator(); } getPaginator(onChanges) { if (onChanges) { this.getResultsAsObservable().subscribe(() => { onChanges(this.paginator); }); } return this.paginator; } getResults() { return this.paginator.getResults(); } getModels() { return this.paginator.getResults().map((result) => result.getModel()); } getResultsAsPromise() { return new Promise((resolve) => { this.subject .getQueryCallbackChanges() .pipe(operators_1.takeWhile((changes) => { return changes.results === undefined; })) .toPromise() .then(() => { resolve(this.getResults()); }); this.subject.execStatement(this.subject.getSql()); }); } toJson() { return new Promise((resolve) => { this.subject .getQueryCallbackChanges() .pipe(operators_1.takeWhile((changes) => { return changes.results === undefined; })) .toPromise() .then(() => { const results = []; this.getResults().forEach((r) => { const c = r._toPlain(); Object.keys(c).forEach((key) => { if (key.substr(0, 2) === '__') { delete c[key]; } }); results.push(c); }); resolve(JSON.stringify(results)); }); this.subject.execStatement(this.subject.getSql()); }); } getResultsAsObservable() { return new rxjs_1.Observable((observer) => { this._subscriptions.push(this.subject.getQueryCallbackChanges().subscribe((changes) => { if (changes.results !== undefined) { this.subject.getRepository()._zone.run(() => { observer.next(this.getResults()); }); } })); }); } getReadOnlyResultsAsObservable() { return new rxjs_1.Observable((observer) => { this._subscriptions.push(this.subject.getQueryCallbackChanges().subscribe((changes) => { if (changes.results !== undefined) { this.subject.getRepository()._zone.run(() => { observer.next(this.getResults().map((item) => { return item.getModel(); })); }); } })); }); } create(data, id) { return new Promise((resolve, reject) => { this.subject .getRepository() .create(data, id, this.subject.getSqlSelectParsed(this.subject.getSql())) .then((c) => { this.subject .getQueryCallbackChanges() .pipe(operators_1.take(1)) .toPromise() .then(() => { resolve(c); }); this.subject.execStatement(this.subject.getSql()); }); }); } unsubscribe() { this._subscriptions.forEach((sub) => { sub.unsubscribe(); }); } } exports.Select = Select;