UNPKG

@harishreddym/baqend

Version:

Baqend JavaScript SDK

73 lines (63 loc) 1.71 kB
'use strict'; const Attribute = require('./Attribute'); const Type = require('./Type'); /** * @alias metamodel.SingularAttribute * @extends metamodel.Attribute */ class SingularAttribute extends Attribute { /** * The constructor of the element type of this attribute * @type {Class.<*>} */ get typeConstructor() { return this.type.typeConstructor; } /** * @inheritDoc * @type Attribute.PersistentAttributeType */ get persistentAttributeType() { switch (this.type.persistenceType) { case Type.PersistenceType.BASIC: return Attribute.PersistentAttributeType.BASIC; case Type.PersistenceType.EMBEDDABLE: return Attribute.PersistentAttributeType.EMBEDDED; case Type.PersistenceType.ENTITY: return Attribute.PersistentAttributeType.ONE_TO_MANY; default: throw new Error('Unknown persistent attribute type.'); } } /** * @param {string} name * @param {metamodel.Type} type * @param {boolean=} isMetadata <code>true</code> if the attribute is an metadata attribute */ constructor(name, type, isMetadata) { super(name, isMetadata); /** @type metamodel.Type */ this.type = type; } /** * @inheritDoc */ getJsonValue(state, object, options) { return this.type.toJsonValue(state, this.getValue(object), options); } /** * @inheritDoc */ setJsonValue(state, object, jsonValue, options) { this.setValue(object, this.type.fromJsonValue(state, jsonValue, this.getValue(object), options)); } /** * @inheritDoc */ toJSON() { return Object.assign({}, super.toJSON(), { type: this.type.ref, }); } } module.exports = SingularAttribute;