UNPKG

@trusthab/composable-resources

Version:

migrating https://github.com/knetikmedia/hab-api/tree/integration/app/resources/composable

86 lines (76 loc) 1.91 kB
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); };