80 lines
1.9 KiB
JavaScript
Raw Normal View History

'use strict';
const _ = require('lodash');
const uploadFiles = require('../utils/upload-files');
/**
* A set of functions called "actions" for `ContentManager`
*/
module.exports = {
2019-12-10 16:21:21 +01:00
fetch(params, populate) {
return strapi.query(params.model).findOne({ id: params.id }, populate);
},
fetchAll(params, query) {
2019-11-15 11:49:32 +01:00
const { query: request, populate, ...filters } = query;
2019-03-13 19:27:18 +01:00
2019-04-09 16:01:01 +02:00
const queryFilter = !_.isEmpty(request)
? {
...filters, // Filters is an object containing the limit/sort and start
...request,
}
: filters;
2018-05-23 11:27:39 +02:00
// Find entries using `queries` system
2019-11-15 11:49:32 +01:00
return strapi.query(params.model).find(queryFilter, populate);
2018-06-13 17:56:41 +02:00
},
count(params, query) {
2019-11-15 11:49:32 +01:00
const { ...filters } = query;
return strapi.query(params.model).count(filters);
},
2019-11-15 11:49:32 +01:00
async create(data, { files, model } = {}) {
const entry = await strapi.query(model).create(data);
if (files) {
2019-11-15 11:49:32 +01:00
await uploadFiles(entry, files, { model });
return strapi.query(model).findOne({ id: entry.id });
}
return entry;
},
2019-11-15 11:49:32 +01:00
async edit(params, data, { model, files } = {}) {
const entry = await strapi.query(model).update({ id: params.id }, data);
if (files) {
2019-11-15 11:49:32 +01:00
await uploadFiles(entry, files, { model });
return strapi.query(model).findOne({ id: entry.id });
}
return entry;
},
2019-11-15 11:49:32 +01:00
delete(params) {
return strapi.query(params.model).delete({ id: params.id });
},
2019-07-16 20:11:34 +02:00
deleteMany(params, query) {
const { model } = params;
const toRemove = Object.values(_.omit(query, 'source'));
2019-11-15 11:49:32 +01:00
const { primaryKey } = strapi.query(model);
2019-07-16 23:27:34 +02:00
const filter = { [`${primaryKey}_in`]: toRemove, _limit: 100 };
2019-11-15 11:49:32 +01:00
return strapi.query(model).delete(filter);
},
search(params, query) {
2019-07-26 10:57:27 +02:00
const { model } = params;
2019-11-15 11:49:32 +01:00
return strapi.query(model).search(query);
},
countSearch(params, query) {
2019-07-26 10:57:27 +02:00
const { model } = params;
2019-11-15 11:49:32 +01:00
const { _q } = query;
return strapi.query(model).countSearch({ _q });
},
};