UNPKG

oa-jira

Version:

Octet Agile's JIRA connectivity project.

50 lines (42 loc) 1.98 kB
const jira = require('../../jira'); const fieldsHelper = require('../helpers/fields.helper'); const historiesHelper = require('../helpers/histories.helper'); const Issue = require('../classes/issue.class'); const SnapshotsBuilder = require('../builders/issue.snapshots.builder'); exports.create = ({ key, created, snapshots } = {}) => { return Issue.create({ key, created, snapshots }); }; exports.resolve = issue => Issue.resolve(issue); const parseIssue = (connection, data, cache) => { if (!data) return Promise.resolve(null); const created = new Date(data.fields.created); const resolutiondate = data.fields.resolutiondate ? new Date(data.fields.resolutiondate) : null; return fieldsHelper .parse({ fields: data.fields, cache }) .then(issueData => SnapshotsBuilder.init(issueData)) .then(builder => historiesHelper.parse({ connection, cache, builder, histories: data.changelog?.histories })) .then(builder => builder.build({ created })) .then(snapshots => Issue.create({ key: data.key, created, resolutiondate, snapshots })) .catch(error => Promise.reject(error)); }; const parseIssues = (connection, issuesData, cache, issues = []) => { if (issuesData.length === 0) return Promise.resolve(issues); return parseIssue(connection, issuesData.pop(), cache) .then(issue => { issues.push(issue); return parseIssues(connection, issuesData, cache, issues); }) .catch(error => Promise.reject(error)); }; exports.getByKey = ({ connection, key, cache }) => { return jira .getIssueByKey(connection, key) .then(data => parseIssue(connection, data, cache)) .catch(error => Promise.reject(error)); }; exports.getByBoardId = ({ connection, boardId, cache, offset, size }) => { return jira .getIssuesByBoardId(connection, boardId, offset, size) .then(data => parseIssues(connection, data.issues, cache)) .catch(error => Promise.reject(error)); };