@trusthab/composable-resources
Version:
migrating https://github.com/knetikmedia/hab-api/tree/integration/app/resources/composable
86 lines (76 loc) • 1.91 kB
JavaScript
const composer = require('../mixin_loader');
const moment = require('moment');
const _ = require('lodash');
module.exports = (App) => {
const { underscore } = require('inflected');
class ResidentResource {
static mixins() {
return [
// Functionality
'Validatable',
'Templatable',
// ORMish
'Persistable',
'KnetikCloudPersistence',
// Mapping and helpers
'Common',
'Nameable',
'Alertable',
'User'
];
}
static fields() {
return {
status: {
get_method: 'getStatus'
}
};
}
getStatus() {
return !!(this.parent_location_id && this.verified);
}
static knetikCloudMethods() {
return {
search: {
index: 'users',
template: 'tenants'
},
find: {
api: 'UsersApi',
method: 'getUser'
},
create: {
api: 'UsersApi',
method: 'registerUser',
paramsBuilder: (params) => {
params.template = 'tenants';
params.created_at = moment().unix();
return [{ userResource: params }];
}
},
update: {
api: 'UsersApi',
method: 'updateUser',
paramsBuilder: (id, params) => {
params.template = 'tenants';
_.set(
params,
"additional_properties.updated_at",
{ type: "integer", value: moment().unix() }
);
return [id, { userResource: params }];
}
},
destroy: {
api: 'UsersApi',
method: 'updateUser',
paramsBuilder: (id, params) => {
params.template = 'tenants';
return [id, { userResource: params }];
}
}
};
}
}
return composer(ResidentResource, App);
};