src/helpers/user/RelatedUser.js
import { deprecate } from 'core-decorators'; // eslint-disable-line
import RelatedUserModel from '../../models/user/RelatedUser';
import RelatedUserService from '../../services/RelatedUserService';
import Helper from '../Helper';
import { aggregate } from '../../utilities/ClassUtility';
/**
* Helper class representing a RelatedUser.
*
* @extends {RelatedUserModel}
* @extends {Helper}
*/
class RelatedUser extends aggregate(RelatedUserModel, Helper) {
/**
* Constructor for helper class representing a RelatedUser
*
* @param {Object} json - json api response from server
*/
constructor(json = {}) {
super(json);
this.deserializeRelationshipStubs(json);
this.syncRelationships(json);
}
/** @type {String} - The type */
get type() {
return this._type || 'related_users';
}
/** @type {RelatedUser} */
get followed() {
return this._relationships.followed_user;
}
/** @type {RelatedUser} */
get follower() {
return this._relationships.follower_user;
}
/** @type {RelatedUser} */
set followed(followed) {
/** @type {RelatedUser} */
this._relationships.followed_user = followed;
}
/** @type {RelatedUser} */
set follower(follower) {
/** @type {RelatedUser} */
this._relationships.follower_user = follower;
}
/** @type {String} - The type */
set type(type) {
/** @type {String} - The type */
this._type = type;
}
/**
* Saves a relatedUser (insert if id doesn't exist, update if it does)
* @return {Promise<RelatedUser>} - Returns a promise via ajax call.
*
* @example
* import { RelatedUser, relatedUserService } from 'clinical6';
*
* const relatedUser = new RelatedUser({...});
*
* // Updates relatedUser
* relatedUser.save();
*/
save(relatedUser = undefined) {
return (this.id) ? (new RelatedUserService()).update(this, relatedUser)
: (new RelatedUserService()).insert(this, relatedUser);
}
/**
* Deletes a relatedUser
* @return {Promise<RelatedUser>} - Returns a promise via ajax call.
*
* @example
* import { RelatedUser, relatedUserService } from 'clinical6';
*
* const relatedUser = new RelatedUser({...});
*
* // Deletes relatedUser
* relatedUser.delete();
*/
delete(relatedUser = undefined) {
return (new RelatedUserService()).delete(this, relatedUser);
}
}
export default RelatedUser;