UNPKG

oa-jira

Version:

Octet Agile's JIRA connectivity project.

55 lines (44 loc) 1.7 kB
const Change = require('../classes/change.class'); const Changes = require('../classes/changes.class'); class ChangesBuilder { #rawData; #changes; constructor({ rawData, time }) { this.#changes = {}; this.#rawData = rawData; this.#rawData.updated = time; } isEmpty = () => Object.keys(this.#changes).length === 0; append = ({ name, source }) => { return Change.create({ name, source, target: this.#rawData[name] }).then(change => { if (change) { this.#changes[change.getName()] = change; if (name !== 'updated') this.#rawData[name] = source; } return Promise.resolve(this); }); }; removeVersion = ({ version }) => { const source = []; for (const targetVersion of this.#rawData['versions']) { if (targetVersion.getId() !== version.getId()) source.push(targetVersion); } return Change.create({ name: 'versions', source, target: this.#rawData['versions'] }).then(change => { this.#changes[change.getName()] = change; this.#rawData['versions'] = source; return Promise.resolve(this); }); }; appendVersion = ({ version }) => { const source = [...this.#rawData['versions']]; source.push(version); return Change.create({ name: 'versions', source, target: this.#rawData['versions'] }).then(change => { this.#changes[change.getName()] = change; this.#rawData['versions'] = source; return Promise.resolve(this); }); }; buildChanges = () => Changes.create({ changes: Object.values(this.#changes) }); buildRawData = () => Promise.resolve(this.#rawData); } module.exports = ChangesBuilder;