import FieldDTO from './field-dto.js' import JobDTO from './job-dto.js' import JobResultDTO from './job-result-dto.js' /** * */ class JobRunDTO { constructor (json) { this.json = json } /** * @type {string} */ get createdTimestamp () { return this.json.createdTimestamp } /** * @type {number} */ get errorCount () { return this.json.errorCount } /** * @type {number} */ get failureCount () { return this.json.failureCount } /** * @type {string} */ get id () { return this.json.id } /** * @returns {JobDTO} */ get job () { return new JobDTO(this.json.job) } /** * @type {string} */ get name () { return this.json.name } /** * @type {number} */ get processedCount () { return this.json.processedCount } /** * @type {number} */ get recordCount () { return this.json.recordCount } /** * @type {JobResultDTO[]} */ get results () { return this.json.results.map(o => new JobResultDTO(o)) } /** * @type {string} */ get status () { return this.json.status } /** * @type {number} */ get successCount () { return this.json.successCount } /** * @type {Object<string, string>} */ get values () { return this.json.values } /** * @returns {boolean} */ isActive () { return this.status === 'CLASSIFYING' || this.status === 'INITIALIZING' || this.status === 'RUNNING' || this.status === 'STOPPING' } /** * @returns {FieldDTO[]} */ expectedFields () { return this.job.fields.filter(f => f.fieldType === 'EXPECTED') } /** * @returns {FieldDTO[]} */ inputFields () { return this.job.fields.filter(f => f.fieldType === 'INPUT') } /** * @returns {boolean} */ stopped () { return this.status === 'COMPLETED' || this.status === 'ERROR' } } export default JobRunDTO