|
|
|
@ -43,34 +43,28 @@ export class JobsGateway implements OnModuleInit {
|
|
|
|
|
@SubscribeMessage('subscribe') |
|
|
|
|
async subscribe( |
|
|
|
|
@MessageBody() |
|
|
|
|
body: { _id: number; data: { id: string; name: string } | any }, |
|
|
|
|
body: { _id: number; data: { id: string } | any }, |
|
|
|
|
@ConnectedSocket() client: Socket, |
|
|
|
|
): Promise<void> { |
|
|
|
|
const { _id, data } = body; |
|
|
|
|
if ( |
|
|
|
|
Object.keys(data).every((k) => ['name', 'id'].includes(k)) && |
|
|
|
|
data?.name && |
|
|
|
|
data?.id |
|
|
|
|
) { |
|
|
|
|
const rooms = (await this.jobsService.jobList(data.name)).map( |
|
|
|
|
(j) => `${j.name}-${j.id}`, |
|
|
|
|
if (Object.keys(data).every((k) => ['id'].includes(k)) && data?.id) { |
|
|
|
|
const rooms = (await this.jobsService.jobList()).map( |
|
|
|
|
(j) => `jobs-${j.id}`, |
|
|
|
|
); |
|
|
|
|
const room = rooms.find((r) => r === `${data.name}-${data.id}`); |
|
|
|
|
const room = rooms.find((r) => r === `jobs-${data.id}`); |
|
|
|
|
if (room) { |
|
|
|
|
client.join(`${data.name}-${data.id}`); |
|
|
|
|
client.join(`jobs-${data.id}`); |
|
|
|
|
client.emit('subscribed', { |
|
|
|
|
_id, |
|
|
|
|
name: data.name, |
|
|
|
|
id: data.id, |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
const job = await this.jobsService.getJobWithData(data); |
|
|
|
|
if (job) { |
|
|
|
|
client.join(`${job.name}-${job.id}`); |
|
|
|
|
client.join(`jobs-${job.id}`); |
|
|
|
|
client.emit('subscribed', { |
|
|
|
|
_id, |
|
|
|
|
name: job.name, |
|
|
|
|
id: job.id, |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
@ -79,42 +73,30 @@ export class JobsGateway implements OnModuleInit {
|
|
|
|
|
|
|
|
|
|
@SubscribeMessage('status') |
|
|
|
|
async status( |
|
|
|
|
@MessageBody() body: { _id: number; data: { id: string; name: string } }, |
|
|
|
|
@MessageBody() body: { _id: number; data: { id: string } }, |
|
|
|
|
@ConnectedSocket() client: Socket, |
|
|
|
|
): Promise<void> { |
|
|
|
|
const { _id, data } = body; |
|
|
|
|
client.emit('status', { |
|
|
|
|
_id, |
|
|
|
|
id: data.id, |
|
|
|
|
name: data.name, |
|
|
|
|
status: await this.jobsService.jobStatus(data.id), |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@OnEvent(JobEvents.STATUS) |
|
|
|
|
async sendJobStatus(data: { |
|
|
|
|
name: string; |
|
|
|
|
id: string; |
|
|
|
|
status: JobStatus; |
|
|
|
|
data?: any; |
|
|
|
|
}): Promise<void> { |
|
|
|
|
this.server.to(`${data.name}-${data.id}`).emit('status', { |
|
|
|
|
sendJobStatus(data: { id: string; status: JobStatus; data?: any }): void { |
|
|
|
|
this.server.to(`jobs-${data.id}`).emit('status', { |
|
|
|
|
id: data.id, |
|
|
|
|
name: data.name, |
|
|
|
|
status: data.status, |
|
|
|
|
data: data.data, |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@OnEvent(JobEvents.LOG) |
|
|
|
|
async sendJobLog(data: { |
|
|
|
|
name: string; |
|
|
|
|
id: string; |
|
|
|
|
data: { message: string }; |
|
|
|
|
}): Promise<void> { |
|
|
|
|
this.server.to(`${data.name}-${data.id}`).emit('log', { |
|
|
|
|
sendJobLog(data: { id: string; data: { message: string } }): void { |
|
|
|
|
this.server.to(`jobs-${data.id}`).emit('log', { |
|
|
|
|
id: data.id, |
|
|
|
|
name: data.name, |
|
|
|
|
data: data.data, |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|