abstruse
Version:
Abstruse CI
96 lines (82 loc) • 2.55 kB
text/typescript
import { JobRun } from './model';
import { format } from 'date-fns';
export function getJobRuns(): Promise<any> {
return new Promise((resolve, reject) => {
new JobRun().fetchAll()
.then(jobRuns => {
if (!jobRuns) {
reject(jobRuns);
} else {
let runs = jobRuns.toJSON();
runs = runs.filter(run => run.status === 'success' || run.status === 'failed')
.reduce((acc, curr) => {
const time = format(new Date(curr.created_at), 'YYYY-MM-DD');
const status = curr.status;
if (!acc[status][time]) {
acc[status][time] = 1;
} else {
acc[status][time] += 1;
}
return acc;
}, { success: {}, failed: {} });
resolve(runs);
}
});
});
}
export function getJobRunsBetween(dateFrom: string, dateTo: string): Promise<any> {
return new Promise((resolve, reject) => {
new JobRun()
.query(qb => {
qb.where('job_runs.start_time', '>=', new Date(dateFrom));
qb.andWhere('job_runs.end_time', '<=', new Date(dateTo));
})
.fetchAll()
.then(jobRuns => {
if (!jobRuns) {
reject(jobRuns);
} else {
let runs = jobRuns.toJSON();
runs = runs.filter(run => run.status === 'success' || run.status === 'failed')
.reduce((acc, curr) => {
const time = format(new Date(curr.created_at), 'YYYY-MM-DD');
const status = curr.status;
if (!acc[status][time]) {
acc[status][time] = 1;
} else {
acc[status][time] += 1;
}
return acc;
}, { success: {}, failed: {} });
resolve(runs);
}
});
});
}
export function getRun(runId: number): Promise<any> {
return new Promise((resolve, reject) => {
new JobRun({ id: runId }).fetch()
.then(job => {
if (!job) {
reject();
}
resolve(job.toJSON());
});
});
}
export function insertJobRun(data: any): Promise<any> {
return new Promise((resolve, reject) => {
new JobRun(data).save(null, { method: 'insert' }).then(job => {
if (!job) {
reject();
}
resolve(job.toJSON());
});
});
}
export function updateJobRun(data: any): Promise<any> {
return new Promise((resolve, reject) => {
new JobRun({ id: data.id }).save(data, { method: 'update', require: false })
.then(job => resolve(job.toJSON()));
});
}