@tasolutions/express-core
Version:
All libs for express
36 lines (33 loc) • 1.65 kB
JavaScript
const _ = require('lodash');
const { apiGWInfo } = require('../../../config');
const { coverRequiredFields } = require('../utils/cover');
module.exports = {
buildResultFromInterface: (actionExtend, fieldListInterfaces) => {
const hasImageField = _.some(fieldListInterfaces, { type: 'IMAGE' });
let contentType = hasImageField ? 'multipart/form-data' : 'application/json';
fieldListInterfaces = _.sortBy(fieldListInterfaces, 'index');
let requestFields = [];
let requiredFields = [];
if (actionExtend.method === 'post' || actionExtend.method === 'put') {
requiredFields = fieldListInterfaces.filter(field => field.is_required).map(field => field.key);
requestFields = fieldListInterfaces;
} else {
requestFields = fieldListInterfaces.filter(field => field.is_filter);
requiredFields = requestFields.map(field => field.key);
}
return {
[actionExtend.action]: {
api: {
path: `${apiGWInfo.prefix}${actionExtend.path}`,
url: `${apiGWInfo.url}${actionExtend.path}`,
method: actionExtend.method?.toUpperCase(),
type: actionExtend.collection_key,
content_type: contentType,
request_fields: requestFields.length ? requestFields : null,
required_fields: requiredFields.length ? coverRequiredFields(requiredFields) : null,
},
response_fields: fieldListInterfaces.length ? fieldListInterfaces : null,
}
};
}
}