Bamieh/reflow

View on GitHub
packages/reflow-cassandra-connection/lib/connection/reflow/job.js

Summary

Maintainability
A
2 hrs
Test Coverage
const transform = require('../../util/transform');
const globalID = require('../../util/global-id');

module.exports = models => ({
  getByProjectID(encodedProjectID, cursorInfo) {
    const projectID = globalID.decode(encodedProjectID).id;
    return models.instance.jobsByProjectId.findAsync({
        project_id: models.datatypes.Long.fromString(projectID),
      }, {
        select: [
          'job_id',
          'threads',
          'flows',
          'source_branch',
          'target_branch',
          'github',
          'start_at',
          'SUM(combination_successes) as successes',
          'SUM(combination_failures) as failures',
          'SUM(combiantion_total) as total',
          'total_number_of_combinations',
          'COUNT(job_id) as current_number_of_combinations',
          'MIN(combination_start_at) as first_reported',
          'MAX(combination_end_at) as last_reported',
        ],
        $groupby: [ 'job_id' ],
      }).then(jobs => {
        return jobs.map(row => {
          const jobID = globalID.encode('job', row.job_id.toJSON());
          const currComb = row.current_number_of_combinations.toJSON();
          const totalComb = row.total_number_of_combinations;

          return {
            node: {
              id: jobID,
              result: transform.result(currComb, totalComb, row.failures),
              endTime: transform.endTime(currComb, totalComb, row.last_reported),
              status: transform.status(currComb, totalComb),
              currentNumberOfCombinations: currComb,
              totalNumberOfCombinations: totalComb,
              numberOfThreads: row.threads,
              numberOfFlows: row.flows,
              github: row.github,
              jenkins: row.jenkins,
              tags: transform.tags(row.tags),
              sourceBranch: row.source_branch,
              targetBranch: row.target_branch,
              trigger: 'Jenkins',
              startTime: row.start_at,
              firstReported: row.first_reported,
              lastReported: row.last_reported,
              flows: { jobID }
            }
          }
        });
      });
  },
})