add server to monorepo.

This commit is contained in:
a.bouhuolia
2023-02-03 11:57:50 +02:00
parent 28e309981b
commit 80b97b5fdc
1303 changed files with 137049 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
import { Service } from 'typedi';
import moment from 'moment';
import { Transformer } from '@/lib/Transformer/Transformer';
@Service()
export class JobTransformer extends Transformer {
/**
* Include these attributes to sale invoice object.
* @returns {Array}
*/
public includeAttributes = (): string[] => {
return ['queued', 'completed', 'failed'];
};
/**
* Detarmines the queued state.
* @param {IJob} job
* @returns {String}
*/
protected queued = (job): boolean => {
return !!job.nextRunAt && moment().isSameOrAfter(job.nextRunAt, 'seconds');
};
/**
* Detarmines the completed state.
* @param job
* @returns
*/
protected completed = (job): boolean => {
return !!job.lastFinishedAt;
};
/**
* Detarmines the failed state.
* @param job
* @returns
*/
protected failed = (job): boolean => {
return (
job.lastFinishedAt &&
job.failedAt &&
moment(job.failedAt).isSame(job.lastFinishedAt)
);
};
}

View File

@@ -0,0 +1,52 @@
import { pick, first } from 'lodash';
import { ObjectId } from 'mongodb';
import { Service, Inject } from 'typedi';
import { JobTransformer } from './JobTransformer';
import { IJobMeta } from '@/interfaces';
import { TransformerInjectable } from '@/lib/Transformer/TransformerInjectable';
@Service()
export default class JobsService {
@Inject('agenda')
agenda: any;
@Inject()
transformer: TransformerInjectable;
/**
* Retrieve job details of the given job id.
* @param {number} tenantId -
* @param {string} jobId -
* @returns {Promise<IJobMeta>}
*/
async getJob(jobId: string): Promise<IJobMeta> {
const jobs = await this.agenda.jobs({ _id: new ObjectId(jobId) });
// Transformes job to json.
const jobJson = this.transformJobToJson(first(jobs));
return this.transformer.transform(null, jobJson, new JobTransformer());
}
/**
* Transformes the job to json.
* @param job
* @returns
*/
private transformJobToJson(job) {
return {
id: job.attrs._id,
...pick(job.attrs, [
'nextRunAt',
'lastModifiedBy',
'lockedAt',
'lastRunAt',
'failCount',
'failReason',
'failedAt',
'lastFinishedAt',
]),
running: job.isRunning(),
};
}
}