Skip to content

Commit

Permalink
fix(server): fix trigger job of agenda implement
Browse files Browse the repository at this point in the history
  • Loading branch information
maslow committed Feb 15, 2023
1 parent 7dadeba commit 69aecf1
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 17 deletions.
27 changes: 13 additions & 14 deletions server/src/trigger/agenda.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import * as assert from 'node:assert'
import { APPLICATION_SECRET_KEY } from 'src/constants'
import { JwtService } from '@nestjs/jwt'
import { PrismaService } from 'src/prisma.service'
import { HttpService } from '@nestjs/axios'

@Injectable()
export class AgendaService {
Expand All @@ -17,6 +18,7 @@ export class AgendaService {
constructor(
private readonly jwtService: JwtService,
private readonly prisma: PrismaService,
private readonly httpService: HttpService,
) {
this.agenda = new Agenda({
db: {
Expand All @@ -37,12 +39,10 @@ export class AgendaService {

async createJob(trigger: CronTrigger) {
const { cron } = trigger
const job = await this.agenda.schedule(
cron,
AgendaService.JOB_NAME,
trigger,
)

// const job = await this.agenda.every(cron, AgendaService.JOB_NAME, trigger)
const job = this.agenda.create(AgendaService.JOB_NAME, trigger)
job.repeatEvery(cron)
await job.save()
return job
}

Expand All @@ -60,20 +60,19 @@ export class AgendaService {

async processor(job: Job<CronTrigger>, done: (error?: Error) => void) {
const { appid, target } = job.attrs.data
this.logger.debug(`Triggering ${target} by cron job`)
this.logger.debug(`Triggering ${target} by cron job ${job.attrs._id}`)

// generate trigger token
const token = this.getTriggerToken(appid)
// get runtime url
const serviceName = appid
const namespace = GetApplicationNamespaceById(appid)
const appAddress = `${serviceName}.${namespace}:8000`
const url = `http://${appAddress}/${target}`

await fetch(url, {
method: 'POST',
headers: {
'x-laf-trigger-token': `${token}`,
},
// generate trigger token
const token = this.getTriggerToken(appid)
const headers = { 'x-laf-trigger-token': `${token}` }
this.httpService.axiosRef.post(url, {}, { headers }).catch(() => {
// do nothing
})
done()
}
Expand Down
4 changes: 4 additions & 0 deletions server/src/trigger/cron-job.service.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { Injectable } from '@nestjs/common'

@Injectable()
export class CronJobService {}
4 changes: 4 additions & 0 deletions server/src/trigger/trigger-task.service.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { Injectable } from '@nestjs/common'

@Injectable()
export class TriggerTaskService {}
8 changes: 7 additions & 1 deletion server/src/trigger/trigger.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,22 @@ import { PrismaService } from 'src/prisma.service'
import { JwtService } from '@nestjs/jwt'
import { ApplicationService } from 'src/application/application.service'
import { StorageModule } from 'src/storage/storage.module'
import { HttpModule } from '@nestjs/axios'
import { CronJobService } from './cron-job.service'
import { TriggerTaskService } from './trigger-task.service'
import { RegionModule } from 'src/region/region.module'

@Module({
imports: [StorageModule],
imports: [StorageModule, HttpModule, RegionModule],
controllers: [TriggerController],
providers: [
TriggerService,
AgendaService,
PrismaService,
JwtService,
ApplicationService,
CronJobService,
TriggerTaskService,
],
})
export class TriggerModule {}
4 changes: 2 additions & 2 deletions server/src/trigger/trigger.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,11 @@ export class TriggerService {
}

async remove(appid: string, id: string) {
await this.agenda.removeJob(id)

const res = await this.prisma.cronTrigger.deleteMany({
where: { appid, id },
})

await this.agenda.removeJob(id)
return res
}
}

0 comments on commit 69aecf1

Please sign in to comment.