@syngrisi/syngrisi
Version:
Syngrisi - Visual Testing Tool
38 lines (30 loc) • 1.36 kB
text/typescript
import mongoose, { FilterQuery } from 'mongoose';
import { removeEmptyProperties } from '@utils';
import log from '@logger';
import { ExtededModelMembers, PaginateOptions } from '@models/plugins/utils';
import { RequestUser } from '@root/src/types';
const get = async (modelName: string, filter: FilterQuery<typeof Test>, options: PaginateOptions) => {
const itemModel = mongoose.model(modelName);
return (itemModel as unknown as ExtededModelMembers<typeof itemModel>).paginate(filter, options);
};
const put = async (modelName: string, id: string, options: { [key: string]: unknown }, user: RequestUser) => {
const itemModel = mongoose.model(modelName);
const logOpts = {
scope: 'generic.service.put',
ref: id,
itemType: modelName,
msgType: 'UPDATE',
user: user?.username,
};
const opts = removeEmptyProperties(options);
log.debug(`start update '${modelName}' with id: '${id}', body: '${JSON.stringify(opts)}'`, logOpts);
const item = await itemModel.findByIdAndUpdate(id, options).exec();
if (!item) throw new Error(`cannot find the item: ${modelName}, id: ${id}, options: ${JSON.stringify(options)}`);
await item.save();
log.debug(`baseline with id: '${id}' and opts: '${JSON.stringify(opts)}' was updated`, logOpts);
return item;
};
export {
get,
put,
};