Home Reference Source Repository

src/collection/ShadowModelAccess.js

import Access from "../Access";


const _modelProperty = Symbol("modelProperty");


export default class ShadowModelAccess extends Access {
	constructor(modelProperty, impl) {
		super(impl);

		this[_modelProperty] = modelProperty;
	}

	/*
		Returns a ShadowModelAccess so any subproperties will have a ShadowModelAccess accessor.
	*/
	create$ForChild(childImpl) {
		return new ShadowModelAccess(this[_modelProperty], childImpl);
	}

	/*
		Override parent version so can reset dirty flag in model
	*/
	resetToCheckpoint() {
		this.$$().resetDataToCheckpoint();
	}

	$$() {
		return this[_modelProperty];
	}

	cid() {
		return this.$$().cid;
	}

	collection() {
		return this.$$().collection._();
	}

	destroy() {
		return this.$$().destroy();
	}

	id() {
		return this.$$().id;
	}

	isWaiting() {
		return this.$$().isWaiting();
	}

	isDirty() {
		return this.$$().isDirty();
	}

	isNew() {
		return this.$$().isNew();
	}

	remove() {
		return this.$$().remove(this.id);
	}

	save() {
		return this.$$().save();
	}
}