77 */
88
99const validateTypes = require ( './validateTypes' )
10- const { error } = require ( './utils' )
10+ const { error, transformAttr } = require ( './utils' )
1111
1212// Normalize Data
1313module . exports = ( DocumentClient ) => ( schema , linked , data , filter = false ) => {
@@ -16,20 +16,15 @@ module.exports = (DocumentClient) => (schema,linked,data,filter=false) => {
1616 const validateType = validateTypes ( DocumentClient )
1717
1818 let _data = Object . keys ( data ) . reduce ( ( acc , field ) => {
19-
19+
2020 return Object . assign ( acc ,
21- schema [ field ] ? { [ schema [ field ] . map || field ] : (
22- schema [ field ] . prefix || schema [ field ] . suffix
23- ? `${ schema [ field ] . prefix || '' } ${ data [ field ] } ${ schema [ field ] . suffix || '' } `
24- : data [ field ]
25- ) }
21+ schema [ field ] ? { [ schema [ field ] . map || field ] : data [ field ] }
2622 : filter ? { } // this will filter out non-mapped fields
2723 : field === '$remove' ? { $remove : data [ field ] } // support for removes
2824 : error ( `Field '${ field } ' does not have a mapping or alias` )
2925 )
3026 } , { } )
3127
32- // TODO: rework linked fields?
3328 // Process linked
3429 let composites = Object . keys ( linked ) . reduce ( ( acc , attr ) => {
3530
@@ -39,8 +34,8 @@ module.exports = (DocumentClient) => (schema,linked,data,filter=false) => {
3934 if ( _data [ field ] !== undefined ) return acc // if value exists, let override
4035 let values = linked [ attr ] . map ( f => {
4136 if ( _data [ f ] === undefined ) { return null }
42- return validateType ( schema [ f ] , f , _data [ f ] , _data )
43- } ) . filter ( x => x !== null )
37+ return transformAttr ( schema [ f ] , validateType ( schema [ f ] , f , _data [ f ] , _data ) , _data )
38+ } ) . filter ( x => x !== null )
4439
4540 // TODO: add required fields
4641 // if (values.length > 0 && values.length !== linked[field].length) {
@@ -49,7 +44,8 @@ module.exports = (DocumentClient) => (schema,linked,data,filter=false) => {
4944
5045 if ( values . length === linked [ attr ] . length ) {
5146 return Object . assign ( acc , {
52- [ field ] : `${ schema [ attr ] . prefix || '' } ${ values . join ( schema [ attr ] . delimiter || '#' ) } ${ schema [ attr ] . suffix || '' } `
47+ //[field]: `${schema[attr].prefix || ''}${values.join(schema[attr].delimiter || '#')}${schema[attr].suffix || ''}`
48+ [ field ] : values . join ( schema [ attr ] . delimiter || '#' )
5349 } )
5450 } else {
5551 return acc
0 commit comments