UNPKG

@tasolutions/express-core

Version:
63 lines (58 loc) 2.5 kB
const _ = require('lodash'); const { apiGWInfo } = require('../../../config'); const { coverRequiredFields } = require('../utils/cover'); const { buildFieldListFromInterfaceCustom } = require('./fieldBuilderInterfaceCustom'); module.exports = { createCustomSelectOptionInterface: (options, segment = '/') => { const defaultOptions = { api: { method: null, limit: null, type: null, content_type: null, request_fields: null, required_fields: null, }, response_fields: null, values: null, field_submit: null, field_display: null, }; const mergedOptions = { ...defaultOptions, ...options, api: { ...defaultOptions.api, ...options.api, } }; const fieldList = buildFieldListFromInterfaceCustom(mergedOptions.response_fields); let requestFields = null; if (mergedOptions.api.request_fields) { requestFields = mergedOptions.api.request_fields; } else { requestFields = mergedOptions.api.required_fields ? fieldList.filter(field => mergedOptions.api.required_fields.includes(field.key)) : null; } if (mergedOptions.api.key_request_fields) { requestFields = fieldList.filter(field => mergedOptions.api.key_request_fields.includes(field.key)) } return { api: { path: mergedOptions.api.path ? `${apiGWInfo.prefix}${segment}${mergedOptions.api.path}` : null, url: mergedOptions.api.path ? `${apiGWInfo.url}${segment}${mergedOptions.api.path}` : null, method: mergedOptions.api.method, limit: mergedOptions.api.limit, type: mergedOptions.api.type, content_type: mergedOptions.api.content_type, request_fields: requestFields && requestFields.length ? requestFields : null, required_fields: mergedOptions.api.required_fields ? coverRequiredFields(mergedOptions.api.required_fields) : null, }, response_fields: fieldList && fieldList.length ? fieldList : null, values: mergedOptions.values, field_submit: mergedOptions.field_submit, field_display: mergedOptions.field_display, }; } }