adonis-api-resources
Version:
API resources for AdonisJS
40 lines (39 loc) • 1.12 kB
JavaScript
export default class PaginatedProcessor {
collectionProcessor;
constructor(collectionProcessor) {
this.collectionProcessor = collectionProcessor;
}
extractCollection(data) {
return 'rows' in data ? data.rows : data.data;
}
extractMeta(data) {
if ('getMeta' in data) {
if (typeof data.getMeta === 'function') {
return data.getMeta();
}
else {
return data.meta;
}
}
else
return {};
}
pick(data, ...keys) {
return {
meta: this.extractMeta(data),
data: this.collectionProcessor.pick(this.extractCollection(data), ...keys),
};
}
omit(data, ...keys) {
return {
meta: this.extractMeta(data),
data: this.collectionProcessor.omit(this.extractCollection(data), ...keys),
};
}
remap(data, defineMap) {
return {
meta: this.extractMeta(data),
data: this.collectionProcessor.remap(this.extractCollection(data), defineMap),
};
}
}