@tasolutions/express-core
Version:
All libs for express
58 lines (46 loc) • 2.2 kB
JavaScript
const _ = require('lodash');
const Response = require('../../../../utils/response');
const queryUtil = require('../../../../utils/query.util');
const { mapHeadersToQuery } = require('../../../../utils/requestHeader');
const { DocumentTemplate } = require('../models');
module.exports = {
/**
* This crud list
*/
list: async (req, res, Collection, configs) => {
try {
const sort = queryUtil.getSort(req, configs.sort);
let query = await queryUtil.getQuery(DocumentTemplate, req);
if (configs.query) {
query = Object.assign({}, configs.query, query);
};
query.collection_name = Collection.modelName;
let andConditions = []; // Mảng để lưu điều kiện $and cho truy vấn
// Thêm dịch vụ loại nếu có
if (req.query.service_type) {
andConditions.push({ service_type: req.query.service_type });
}
// Xử lý tìm kiếm
if (req.query.search) {
const searchQuery = queryUtil.search(DocumentTemplate, req.query.search);
delete req.query.search; // Xoá search từ query
// Thêm searchQuery vào mảng điều kiện
andConditions.push(searchQuery);
}
// Kiểm tra nếu có điều kiện $and
if (andConditions.length > 0) {
query = { $and: andConditions };
}
// Trở về các thuộc tính khác nếu có
query = Object.assign(await mapHeadersToQuery(req, DocumentTemplate), query);
const populate = configs.populate ? configs.populate : queryUtil.populateField(DocumentTemplate);
let results = await DocumentTemplate.find(query).populate(populate).sort(sort);
if (Array.isArray(configs.includeFields) && configs.includeFields.length > 0) {
results = results.map(result => _.pick(result, configs.includeFields));
}
return Response.success(res, results);
} catch (e) {
return Response.error(res, e.message);
}
},
};