skul
Advanced tools
Comparing version 0.5.1 to 0.5.2
@@ -0,4 +1,14 @@ | ||
/** | ||
* lib/skul/hider.js | ||
* | ||
* SKuL hider methods | ||
* | ||
* Author: Paul Duthoit, Nicolas Thouchkaieff | ||
* Copyright(c) 2018 Paul Duthoit | ||
*/ | ||
// Dependencies | ||
var Promise = require('promise'); | ||
var _ = require('underscore'); | ||
var objectPath = require('object-path'); | ||
@@ -116,15 +126,8 @@ | ||
// Check arguments length | ||
if(arguments.length === 1) { | ||
fields = {}; | ||
} | ||
// Transform arguments | ||
if(typeof fields === 'undefined' || fields === null) fields = {}; | ||
if(typeof fields === 'undefined' || fields === null || _.isEmpty(fields)) fields = { '$all': 1 }; | ||
// Check arguments | ||
if(!(data instanceof Array || typeof data === 'object')) | ||
throw new Error('data have to be an array or an object'); | ||
if(!(typeof fields === 'object')) | ||
throw new Error('fields have to be an object'); | ||
if(!(data instanceof Array || typeof data === 'object')) throw new Error('data have to be an array or an object'); | ||
if(!(typeof fields === 'object')) throw new Error('fields have to be an object'); | ||
@@ -137,46 +140,37 @@ // Set data | ||
var asyncQueue = Promise.resolve(); | ||
if (_.isEmpty(fields)) fields = { '$all': 1 }; | ||
// Check if data to parse is an array | ||
if(!isArray) { | ||
dataToParse = [ dataToParse ]; | ||
} | ||
// Transform data | ||
if(!isArray) dataToParse = [ dataToParse ]; | ||
// Transform data | ||
_.each(dataToParse, function(dataItem) { | ||
_.each(dataItem, function(dataValue, dataKey) { | ||
if (fields[dataKey] || (fields['$all'] && _.contains(allKeys, dataKey))) { | ||
// Set data | ||
var relModel = self.getRelationship(dataKey); | ||
relModel = objectPath.get(relModel, ['model', '$model']) || objectPath.get(relModel, ['model']) || null; | ||
// Data | ||
var relModel = self.getRelationship(dataKey); | ||
// Clean not requested fields | ||
if(!(fields[dataKey] || (fields['$all'] && _.contains(allKeys, dataKey)))) return delete dataItem[dataKey]; | ||
if (relModel && relModel.model) { | ||
if (relModel.model['$model'] && typeof relModel.model['$model'] === 'object') relModel = relModel.model['$model']; | ||
else relModel = relModel.model; | ||
// If relationship | ||
if(relModel) { | ||
// Data | ||
var relFields = {}; | ||
var relData = dataItem[dataKey].data || dataItem[dataKey]; | ||
// Data | ||
var relFields = {}; | ||
var relData = objectPath.get(dataItem, [dataKey, 'data']) || objectPath.get(dataItem, [dataKey]); | ||
if (fields[dataKey] == 1) { | ||
relFields = { '$all': 1 }; | ||
} else if (typeof fields[dataKey] === 'object' && fields[dataKey]['$fields']) { | ||
relFields = fields[dataKey]['$fields']; | ||
} | ||
if(fields[dataKey] == 1) relFields = { '$all': 1 }; | ||
else if(typeof fields[dataKey] === 'object' && fields[dataKey]['$fields']) relFields = fields[dataKey]['$fields']; | ||
// Add to queue | ||
asyncQueue = asyncQueue | ||
.then(relModel.cleanFields.bind(relModel, relData, relFields)) | ||
.then(function() { | ||
return Promise.resolve(); | ||
}); | ||
} | ||
// Add to queue | ||
asyncQueue = asyncQueue | ||
.then(relModel.cleanFields.bind(relModel, relData, relFields)) | ||
.then(function() { | ||
return Promise.resolve(); | ||
}); | ||
} else delete dataItem[dataKey]; | ||
} | ||
}) | ||
}); | ||
}); | ||
@@ -187,10 +181,4 @@ | ||
.then(function() { | ||
// Return data | ||
if(isArray) { | ||
return Promise.resolve(dataToParse); | ||
} else { | ||
return Promise.resolve(dataToParse[0]); | ||
} | ||
if(isArray) return Promise.resolve(dataToParse); | ||
else return Promise.resolve(dataToParse[0]); | ||
}); | ||
@@ -197,0 +185,0 @@ |
{ | ||
"name": "skul", | ||
"description": "SKuL - SQL query manager", | ||
"version": "0.5.1", | ||
"version": "0.5.2", | ||
"author": "Paul Duthoit <duthoit.paul@gmail.com>", | ||
@@ -6,0 +6,0 @@ "homepage": "http://skul.io/", |
214020
6311