yalento
Version:
An awesome integration of Google Firebase for Angular and Node
78 lines (77 loc) • 2.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LocalStorageConnector = void 0;
const rxjs_1 = require("rxjs");
const AbstractConnector_1 = require("./AbstractConnector");
class LocalStorageConnector extends AbstractConnector_1.AbstractConnector {
constructor(repository, storage, options) {
super(repository);
this.lastSql = '';
this.options = options ? options : {};
this.storage = storage;
}
add(items) {
const promises = [];
items.forEach((item) => {
promises.push(this.storage.set(item.getUuid(), Object.assign(Object.assign({}, item._toPlain()), { __timestamp: new Date().getTime() })));
});
return Promise.all(promises);
}
remove(items) {
const promises = [];
items.forEach((item) => {
promises.push(this.storage.remove(item.getUuid()));
});
return Promise.all(promises);
}
update(items) {
return this.add(items);
}
select(sql) {
if (this.lastSql !== sql) {
const results = [];
this.storage
.forEach((value, key, iterationNumber) => {
results.push(value);
})
.then(() => {
this.repository
.createMany(results, '', 'localStorage')
.then()
.catch((e) => {
throw e;
});
});
}
this.lastSql = sql;
}
selectOneByIdentifier(identifier) {
return new Promise((resolve, reject) => {
this.storage.get(identifier).then((value) => {
if (value) {
this.repository
.create(value, identifier, undefined, 'localStorage')
.then((e) => {
resolve(e);
})
.catch(() => {
reject();
});
}
else {
reject();
}
});
});
}
disconnect() {
// no implementation needed
}
getUserUuid() {
return rxjs_1.of('');
}
isPrivateMode() {
return false;
}
}
exports.LocalStorageConnector = LocalStorageConnector;