UNPKG

@harishreddym/baqend

Version:

Baqend JavaScript SDK

72 lines (59 loc) 1.43 kB
'use strict'; const ManagedType = require('./ManagedType'); const Type = require('./Type'); const binding = require('../binding'); /** * @alias metamodel.EmbeddableType * @extends metamodel.ManagedType * * @param {string} ref * @param {Class<binding.Entity>=} typeConstructor */ class EmbeddableType extends ManagedType { /** * @inheritDoc */ get persistenceType() { return Type.PersistenceType.EMBEDDABLE; } /** * @inheritDoc */ createProxyClass() { return this.enhancer.createProxy(binding.Managed); } /** * @inheritDoc */ createObjectFactory(db) { return binding.ManagedFactory.create(this, db); } /** * @inheritDoc */ toJsonValue(state, object, options) { if (state.root && object instanceof this.typeConstructor && !object._metadata.root) { object._metadata.root = state.root; } return super.toJsonValue(state, object, options); } /** * @inheritDoc */ fromJsonValue(state, jsonObject, currentObject, options) { let obj = currentObject; if (jsonObject) { if (!(obj instanceof this.typeConstructor)) { obj = this.create(); } if (state.root && !obj._metadata.root) { obj._metadata.root = state.root; } } return super.fromJsonValue(state, jsonObject, obj, options); } toString() { return 'EmbeddableType(' + this.ref + ')'; } } module.exports = EmbeddableType;