UNPKG

@tasolutions/express-core

Version:
58 lines (46 loc) 2.2 kB
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); } }, };