mirror of
https://github.com/ToolJet/ToolJet
synced 2026-05-05 22:38:48 +00:00
fix: workflow schedule cleanup (#13295)
This commit is contained in:
parent
11d04391f9
commit
680040d520
5 changed files with 37 additions and 12 deletions
|
|
@ -1 +1 @@
|
|||
Subproject commit c955741e5a120cd61651eaf14aef0d5c67059cb0
|
||||
Subproject commit aed7af0149525ff745650c21ee40bf9caf2892dc
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 1754d14f2fc5dee8616f09f13e63b3569e42f3ee
|
||||
Subproject commit 8c0e6dec37f1b0bb7fb5552d8eef4db3ddc18b31
|
||||
|
|
@ -52,6 +52,11 @@ export class AppsModule extends SubModule {
|
|||
'services/page.util.service',
|
||||
]);
|
||||
|
||||
const { AppsActionsListener, TemporalService } = await this.getProviders(configs, 'workflows', [
|
||||
'listeners/app-actions.listener',
|
||||
'services/temporal.service',
|
||||
]);
|
||||
|
||||
return {
|
||||
module: AppsModule,
|
||||
imports: [
|
||||
|
|
@ -74,6 +79,8 @@ export class AppsModule extends SubModule {
|
|||
VersionRepository,
|
||||
AppsRepository,
|
||||
AppGitRepository,
|
||||
AppsActionsListener,
|
||||
TemporalService,
|
||||
PageService,
|
||||
EventsService,
|
||||
AppsUtilService,
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ import { AUDIT_LOGS_REQUEST_CONTEXT_KEY } from '@modules/app/constants';
|
|||
import { MODULES } from '@modules/app/constants/modules';
|
||||
import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||
import { AppGitRepository } from '@modules/app-git/repository';
|
||||
import { WorkflowSchedule } from '@entities/workflow_schedule.entity';
|
||||
|
||||
@Injectable()
|
||||
export class AppsService implements IAppsService {
|
||||
|
|
@ -60,7 +61,7 @@ export class AppsService implements IAppsService {
|
|||
protected readonly componentsService: ComponentsService,
|
||||
protected readonly eventEmitter: EventEmitter2,
|
||||
protected readonly appGitRepository: AppGitRepository
|
||||
) { }
|
||||
) {}
|
||||
async create(user: User, appCreateDto: AppCreateDto) {
|
||||
const { name, icon, type, prompt } = appCreateDto;
|
||||
return await dbTransactionWrap(async (manager: EntityManager) => {
|
||||
|
|
@ -107,12 +108,12 @@ export class AppsService implements IAppsService {
|
|||
: versionName
|
||||
? await this.versionRepository.findByName(versionName, app.id)
|
||||
: // Handle version retrieval based on env
|
||||
await this.versionRepository.findLatestVersionForEnvironment(
|
||||
app.id,
|
||||
envId,
|
||||
environmentName,
|
||||
app.organizationId
|
||||
);
|
||||
await this.versionRepository.findLatestVersionForEnvironment(
|
||||
app.id,
|
||||
envId,
|
||||
environmentName,
|
||||
app.organizationId
|
||||
);
|
||||
|
||||
if (!version) {
|
||||
throw new NotFoundException("Couldn't found app version. Please check the version name");
|
||||
|
|
@ -181,7 +182,24 @@ export class AppsService implements IAppsService {
|
|||
const { organizationId } = user;
|
||||
const { id } = app;
|
||||
|
||||
await this.appRepository.delete({ id, organizationId });
|
||||
await dbTransactionWrap(async (manager: EntityManager) => {
|
||||
const schedules = await manager
|
||||
.createQueryBuilder(WorkflowSchedule, 'workflowSchedule')
|
||||
.innerJoinAndSelect('workflowSchedule.workflow', 'appVersion')
|
||||
.where('appVersion.appId = :appId', { appId: id })
|
||||
.getMany();
|
||||
|
||||
// Emit event with schedule IDs for temporal schedule cleanup
|
||||
if (schedules.length > 0) {
|
||||
const scheduleIds = schedules.map((schedule) => schedule.id);
|
||||
this.eventEmitter.emit('app.deleted', {
|
||||
appId: id,
|
||||
scheduleIds: scheduleIds,
|
||||
});
|
||||
}
|
||||
|
||||
await manager.delete(App, { id, organizationId });
|
||||
});
|
||||
|
||||
//APP_DELETE audit
|
||||
RequestContext.setLocals(AUDIT_LOGS_REQUEST_CONTEXT_KEY, {
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@ import { OnEvent } from '@nestjs/event-emitter';
|
|||
@Injectable()
|
||||
export class AppsActionsListener {
|
||||
constructor() {}
|
||||
@OnEvent('beforeAppDelete')
|
||||
@OnEvent('app.deleted')
|
||||
async handleAppDeletion(args: { appId: string }) {
|
||||
throw new Error('Method not implemented');
|
||||
console.log(`App with ID ${args.appId} has been deleted.`);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue