beyond
Version:
The Full Stack Universal Typescript Framework
60 lines (49 loc) • 1.72 kB
JavaScript
module.exports = class {
#model;
#libraries;
constructor(model) {
this.#model = model;
this.#libraries = model.core.libraries;
}
async list() {
const output = {};
await this.#libraries.ready;
const paths = [...this.#libraries.keys()];
const promises = [];
for (const path of paths) {
if (!this.#libraries.has(path)) continue;
const library = this.#libraries.get(path);
promises.push(library.ready);
}
await Promise.all(promises);
const ids = [];
for (const path of paths) {
if (!this.#libraries.has(path)) continue;
const library = this.#libraries.get(path);
ids.push(`library//${library.id}`);
}
const collection = new this.#model.Collection(this.#model.Library, ids);
await collection.ready;
for (const library of collection.values()) {
if (library.error) continue;
output[library.item.id] = library.toJSON();
}
return output;
}
/**
* @param ids:[libraryId]
*/
async get(ids) {
if (!(ids instanceof Array)) throw new Error('Invalid parameters');
if (!ids.length) return;
ids = ids.map(id => `library//${id}`);
const collection = new this.#model.Collection(this.#model.Library, ids);
await collection.ready;
const output = {};
for (const library of collection.values()) {
if (library.error) continue;
output[library.item.id] = await library.toJSON();
}
return output;
}
}