@furystack/rest-service
Version:
Repository implementation for FuryStack
21 lines • 1.05 kB
JavaScript
import { JsonResult } from '../request-action-implementation.js';
import { getRepository } from '@furystack/repository';
/**
* Creates a GetCollection endpoint for the given model. The model should have a Repository DataSet
* @param options The options for endpoint creation
* @param options.model The Model class
* @param options.primaryKey The field used as primary key on the model
* @returns The created endpoint
*/
export const createGetCollectionEndpoint = (options) => {
const endpoint = async ({ injector, getQuery }) => {
const { findOptions } = getQuery();
const dataSet = getRepository(injector).getDataSetFor(options.model, options.primaryKey);
const entriesPromise = dataSet.find(injector, findOptions || {});
const countPromise = dataSet.count(injector, findOptions?.filter);
const [entries, count] = await Promise.all([entriesPromise, countPromise]);
return JsonResult({ entries, count });
};
return endpoint;
};
//# sourceMappingURL=create-get-collection-endpoint.js.map