import stampit from 'stampit';
import {Meta, Model} from './base';
const ClassMeta = Meta({
name: 'class',
pluralName: 'classes',
endpoints: {
'detail': {
'methods': ['delete', 'patch', 'put', 'get'],
'path': '/v1.1/instances/{instanceName}/classes/{name}/'
},
'list': {
'methods': ['post', 'get'],
'path': '/v1.1/instances/{instanceName}/classes/'
}
},
relatedModels: [ 'DataObject' ]
});
const ClassConstraints = {
instanceName: {
presence: true,
length: {
minimum: 5
}
},
name: {
presence: true,
string: true
},
description: {
string: true
},
schema: {
array: true
},
group: {
numericality: true
},
group_permissions: {
inclusion: ['none', 'read', 'create_objects']
},
other_permissions: {
inclusion: ['none', 'read', 'create_objects']
},
metadata: {
object: true
}
};
/**
* OO wrapper around instance groups {@link http://docs.syncano.com/v4.0/docs/instancesinstanceclasses endpoint}.
* @constructor
* @type {Class}
* @property {String} name
* @property {String} instanceName
* @property {Number} objects_count
* @property {Array} schema
* @property {String} status
* @property {Object} metadata
* @property {String} revision
* @property {String} expected_revision
* @property {String} group
* @property {String} group_permissions
* @property {String} other_permissions
* @property {String} [description = null]
* @property {String} [links = {}]
* @property {Date} [created_at = null]
* @property {Date} [updated_at = null]
*/
const Class = stampit()
.compose(Model)
.setMeta(ClassMeta)
.setConstraints(ClassConstraints);
export default Class;