PersistedModel extendido
This commit is contained in:
parent
807d1c4ab9
commit
0ef8995724
|
@ -1,4 +1,3 @@
|
||||||
let installMethod = require('../util.js');
|
|
||||||
|
|
||||||
module.exports = function(Client) {
|
module.exports = function(Client) {
|
||||||
// Validations
|
// Validations
|
||||||
|
@ -76,7 +75,7 @@ module.exports = function(Client) {
|
||||||
|
|
||||||
// Basic filter
|
// Basic filter
|
||||||
|
|
||||||
installMethod(Client, 'filter', filterClients);
|
Client.installMethod('filter', filterClients);
|
||||||
function filterClients(p) {
|
function filterClients(p) {
|
||||||
return {
|
return {
|
||||||
where: {
|
where: {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "Client",
|
"name": "Client",
|
||||||
"base": "PersistedModel",
|
"base": "MyModel",
|
||||||
"validateUpsert": true,
|
"validateUpsert": true,
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": {
|
"id": {
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
|
||||||
|
module.exports = function(self) {
|
||||||
|
self.setup = function() {
|
||||||
|
self.super_.setup.call(this);
|
||||||
|
|
||||||
|
let disableMethods = {
|
||||||
|
'create': true,
|
||||||
|
'replaceOrCreate': true,
|
||||||
|
'patchOrCreate': true,
|
||||||
|
'upsert': true,
|
||||||
|
'updateOrCreate': true,
|
||||||
|
'exists': true,
|
||||||
|
'find': true,
|
||||||
|
'findOne': true,
|
||||||
|
'findById': true,
|
||||||
|
'deleteById': true,
|
||||||
|
'replaceById': true,
|
||||||
|
'updateAttributes': false,
|
||||||
|
'createChangeStream': true,
|
||||||
|
'updateAll': true,
|
||||||
|
'upsertWithWhere': true,
|
||||||
|
'count': true
|
||||||
|
};
|
||||||
|
|
||||||
|
for(let method in disableMethods) {
|
||||||
|
//this.disableRemoteMethod(method, disableMethods[method]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.installMethod = function(methodName, filterCb) {
|
||||||
|
this.remoteMethod(methodName, {
|
||||||
|
description: 'List items using a filter',
|
||||||
|
accessType: 'READ',
|
||||||
|
accepts: [
|
||||||
|
{
|
||||||
|
arg: 'filter',
|
||||||
|
type: 'object',
|
||||||
|
required: true,
|
||||||
|
description: 'Filter defining where',
|
||||||
|
http: function(ctx) {
|
||||||
|
return ctx.req.query;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
returns: {
|
||||||
|
arg: 'data',
|
||||||
|
type: [this.modelName],
|
||||||
|
root: true
|
||||||
|
},
|
||||||
|
http: {
|
||||||
|
verb: 'get',
|
||||||
|
path: `/${methodName}`
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.filter = (params, cb) => {
|
||||||
|
let filter = removeEmpty(filterCb(params));
|
||||||
|
this.find(filter, function(err, instances) {
|
||||||
|
if(!err) {
|
||||||
|
cb(null, instances);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeEmpty(o) {
|
||||||
|
if(Array.isArray(o)) {
|
||||||
|
let array = [];
|
||||||
|
for(let item of o) {
|
||||||
|
let i = removeEmpty(item);
|
||||||
|
if(!isEmpty(item))
|
||||||
|
array.push(item);
|
||||||
|
};
|
||||||
|
if(array.length > 0)
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
else if (typeof o === 'object') {
|
||||||
|
let object = {};
|
||||||
|
for(let key in o) {
|
||||||
|
let i = removeEmpty(o[key]);
|
||||||
|
if(!isEmpty(i))
|
||||||
|
object[key] = i;
|
||||||
|
}
|
||||||
|
if(Object.keys(object).length > 0)
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
else if (!isEmpty(o))
|
||||||
|
return o;
|
||||||
|
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isEmpty(value) {
|
||||||
|
return value === undefined || value === "";
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
{
|
||||||
|
"name": "MyModel",
|
||||||
|
"base": "PersistedModel"
|
||||||
|
}
|
|
@ -1,69 +0,0 @@
|
||||||
|
|
||||||
module.exports = installMethod;
|
|
||||||
|
|
||||||
function installMethod(model, methodName, filterCb) {
|
|
||||||
model.remoteMethod(methodName, {
|
|
||||||
description: 'List items using a filter',
|
|
||||||
accessType: 'READ',
|
|
||||||
accepts: [
|
|
||||||
{
|
|
||||||
arg: 'filter',
|
|
||||||
type: 'object',
|
|
||||||
required: true,
|
|
||||||
description: 'Filter defining where',
|
|
||||||
http: function(ctx) {
|
|
||||||
return ctx.req.query;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
returns: {
|
|
||||||
arg: 'data',
|
|
||||||
type: [model.modelName],
|
|
||||||
root: true
|
|
||||||
},
|
|
||||||
http: {
|
|
||||||
verb: 'get',
|
|
||||||
path: `/${methodName}`
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
model.filter = function(params, cb) {
|
|
||||||
let filter = removeEmpty(filterCb(params));
|
|
||||||
model.find(filter, function(err, instances) {
|
|
||||||
if(!err) {
|
|
||||||
cb(null, instances);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
function removeEmpty(o) {
|
|
||||||
if(Array.isArray(o)) {
|
|
||||||
let array = [];
|
|
||||||
for(let item of o) {
|
|
||||||
let i = removeEmpty(item);
|
|
||||||
if(!isEmpty(item))
|
|
||||||
array.push(item);
|
|
||||||
};
|
|
||||||
if(array.length > 0)
|
|
||||||
return array;
|
|
||||||
}
|
|
||||||
else if (typeof o === 'object') {
|
|
||||||
let object = {};
|
|
||||||
for(let key in o) {
|
|
||||||
let i = removeEmpty(o[key]);
|
|
||||||
if(!isEmpty(i))
|
|
||||||
object[key] = i;
|
|
||||||
}
|
|
||||||
if(Object.keys(object).length > 0)
|
|
||||||
return object;
|
|
||||||
}
|
|
||||||
else if (!isEmpty(o))
|
|
||||||
return o;
|
|
||||||
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
function isEmpty(value) {
|
|
||||||
return value === undefined || value === "";
|
|
||||||
}
|
|
Loading…
Reference in New Issue