src/helpers/CustomClass.js
import CustomClassModel from '../models/CustomClass';
import Helper from './Helper';
import { aggregate } from '../utilities/ClassUtility';
import { serviceFactory } from '../utilities/factories/ServiceFactory';
/**
* Helper class representing Custom Class.
*
* @extends {CustomClassModel}
* @extends {Helper}
*
* @example
* import { CustomClass, HelperFactory, ServiceFactory } from 'clinical6';
* class Kitten extends CustomClass {
* static get type() { return 'kittens'; }
* }
*
* HelperFactory.map.kittens = Kitten;
* ServiceFactory.options.kittens = { title: 'KittenService' };
*
* // Then you can call
* const kittens = await clinical6.get(Kitten);
*/
class CustomClass extends aggregate(CustomClassModel, Helper) {
/**
* Constructor for helper class representing an Agreement Template Field
*
* @param {Object} json - json api response from server
*/
constructor(json = {}) {
super(json);
this.deserializeRelationshipStubs(json);
this.syncRelationships(json);
}
/**
* Deletes an custom class field
* @return {Promise} - Returns a promise via ajax call.
*/
delete() {
const service = serviceFactory.get(this.type);
return service.delete(this);
}
/**
* Saves an custom class field (insert if id doesn't exist, update if it does)
* @return {Promise<CustomClass>} - Returns a promise via ajax call.
*/
save() {
const service = serviceFactory.get(this.type);
return (this.id) ? service.update(this) : service.insert(this);
}
}
export default CustomClass;