sluicebox
Version:
Quickly and elegantly add search, sort and pagination to your plural resource endpoints.
36 lines (31 loc) • 967 B
JavaScript
(function() {
var identity, search;
identity = require('lodash').identity;
search = require('./search');
module.exports = function(field_mapper) {
var field_for, field_mappings, value_for, value_mappers;
field_mappings = {};
value_mappers = {};
field_for = function(field) {
var ref;
return (ref = field_mappings[field]) != null ? ref : (field_mapper != null ? field_mapper : identity)(field);
};
value_for = function(field, value) {
var ref;
return ((ref = value_mappers[field]) != null ? ref : identity)(value);
};
return {
map: function(from, to) {
field_mappings[from] = to;
return this;
},
normalize: function(field, mapper) {
value_mappers[field] = mapper;
return this;
},
search: require('./search')(field_for, value_for),
sort: require('./sort')(field_for),
paginate: require('./paginate')
};
};
}).call(this);