UNPKG

@trusthab/composable-resources

Version:

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

113 lines (104 loc) 2.47 kB
const composer = require('../mixin_loader'); module.exports = (App) => { const { underscore } = require('inflected'); class SettingResource { static mixins() { return [ // Functionality 'Validatable', 'Templatable', // ORMish 'Persistable', 'KnetikCloudPersistence' // 'ObjectCommon' ]; } static simpleProperties() { return true; } static fields() { return { id: { type: 'integer', or: ['null'] }, name: { type: 'text', minLength: 1, path: 'name' }, description: { type: 'text', path: 'long_description' }, icon: { type: 'text', path: 'data.icon' }, current_value: { type: 'text', or: ['null'], path: 'data.current_value' }, default_value: { type: 'text', path: 'data.default_value' }, category: { type: 'text', path: 'category' }, created_at: { type: 'integer', or: ['null'], path: 'created_date' }, updated_at: { type: 'integer', or: ['null'], path: 'updated_date' }, deleted_at: { schema_ignore: true, type: 'integer', or: ['null'], path: 'data.deleted_at' }, template: { type: 'integer', path: 'template', schema_ignore: true } }; } static knetikCloudMethods() { return { search: { index: 'objects', template: 'settings' }, find: { api: 'ObjectsApi', method: 'getObjectItem', paramsBuilder: id => ['settings', id] }, create: { api: 'ObjectsApi', method: 'createObjectItem', paramsBuilder: params => ['settings', { objectItem: params }] }, update: { api: 'ObjectsApi', method: 'updateObjectItem', paramsBuilder: (id, params) => ['settings', id, { cascade: false, objectItem: params }] }, destroy: { api: 'ObjectsApi', method: 'deleteObjectItem', paramsBuilder: id => ['settings', id] } }; } } return composer(SettingResource, App); };