UNPKG

lux-framework

Version:

Build scalable, Node.js-powered REST APIs with almost no code.

50 lines (35 loc) 910 B
// @flow import type { Model } from '../index'; import entries from '../../../utils/entries'; import mapToObject from '../../../utils/map-to-object'; class ChangeSet extends Map<string, any> { isPersisted: boolean; constructor(data?: Object = {}): this { super(entries(data)); this.isPersisted = false; return this; } set(key: string, value: mixed): this { if (!this.isPersisted) { super.set(key, value); } return this; } persist(group?: Array<ChangeSet>): this { if (group) { group.forEach(changeSet => changeSet.unpersist()); } this.isPersisted = true; return this; } unpersist(): this { this.isPersisted = false; return this; } applyTo(target: Model): ChangeSet { const instance = new ChangeSet(mapToObject(this)); target.changeSets.unshift(instance); return instance; } } export default ChangeSet;