rez_core 4.0.160 → 4.0.161
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +26 -0
- package/.idea/250218_nodejs_core.iml +9 -0
- package/.idea/codeStyles/Project.xml +59 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/copilot.data.migration.agent.xml +6 -0
- package/.idea/copilot.data.migration.ask.xml +6 -0
- package/.idea/copilot.data.migration.ask2agent.xml +6 -0
- package/.idea/copilot.data.migration.edit.xml +6 -0
- package/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/.idea/misc.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/prettier.xml +6 -0
- package/.idea/vcs.xml +6 -0
- package/.prettierrc +3 -3
- package/README.md +99 -99
- package/dist/app.module.js +0 -6
- package/dist/app.module.js.map +1 -1
- package/dist/config/config.module.js +2 -2
- package/dist/config/config.module.js.map +1 -1
- package/dist/config/database.config.d.ts +1 -1
- package/dist/config/database.config.js +15 -11
- package/dist/config/database.config.js.map +1 -1
- package/dist/module/auth/guards/role.guard.js +3 -3
- package/dist/module/auth/services/auth.service.js +3 -3
- package/dist/module/auth/services/auth.service.js.map +1 -1
- package/dist/module/enterprise/entity/organization.entity.js +1 -1
- package/dist/module/enterprise/repository/school.repository.js +3 -3
- package/dist/module/enterprise/repository/school.repository.js.map +1 -1
- package/dist/module/filter/repository/saved-filter.repository.js +4 -4
- package/dist/module/filter/service/filter-evaluator.service.js +3 -3
- package/dist/module/filter/service/filter-evaluator.service.js.map +1 -1
- package/dist/module/filter/service/filter.service.d.ts +4 -1
- package/dist/module/filter/service/filter.service.js +50 -31
- package/dist/module/filter/service/filter.service.js.map +1 -1
- package/dist/module/integration/entity/integration-config.entity.js +6 -6
- package/dist/module/integration/entity/integration-config.entity.js.map +1 -1
- package/dist/module/integration/entity/integration-entity-mapper.entity.js +1 -1
- package/dist/module/integration/entity/integration-entity-mapper.entity.js.map +1 -1
- package/dist/module/integration/entity/integration-source.entity.js +4 -4
- package/dist/module/integration/entity/integration-source.entity.js.map +1 -1
- package/dist/module/integration/entity/user-integration.entity.js +4 -4
- package/dist/module/integration/entity/user-integration.entity.js.map +1 -1
- package/dist/module/integration/examples/usage.example.js +9 -9
- package/dist/module/integration/service/integration.service.js +1 -1
- package/dist/module/integration/service/wrapper.service.d.ts +1 -3
- package/dist/module/integration/service/wrapper.service.js +65 -67
- package/dist/module/integration/service/wrapper.service.js.map +1 -1
- package/dist/module/listmaster/entity/list-master-items.entity.js +3 -3
- package/dist/module/listmaster/entity/list-master-items.entity.js.map +1 -1
- package/dist/module/listmaster/entity/list-master.entity.js +4 -4
- package/dist/module/listmaster/entity/list-master.entity.js.map +1 -1
- package/dist/module/listmaster/service/list-master-item.service.js +3 -3
- package/dist/module/listmaster/service/list-master-item.service.js.map +1 -1
- package/dist/module/mapper/entity/field-mapper.entity.js +6 -6
- package/dist/module/mapper/entity/field-mapper.entity.js.map +1 -1
- package/dist/module/mapper/service/field-mapper.service.js +7 -7
- package/dist/module/mapper/service/field-mapper.service.js.map +1 -1
- package/dist/module/mapper/service/mapper.service.js +4 -4
- package/dist/module/mapper/service/mapper.service.js.map +1 -1
- package/dist/module/meta/controller/attribute-master.controller.d.ts +1 -4
- package/dist/module/meta/controller/attribute-master.controller.js +2 -15
- package/dist/module/meta/controller/attribute-master.controller.js.map +1 -1
- package/dist/module/meta/entity/app-master.entity.d.ts +2 -2
- package/dist/module/meta/entity/app-master.entity.js +4 -4
- package/dist/module/meta/entity/entity-master.entity.js +1 -1
- package/dist/module/meta/entity/entity-master.entity.js.map +1 -1
- package/dist/module/meta/entity/view-master.entity.js +1 -1
- package/dist/module/meta/entity/view-master.entity.js.map +1 -1
- package/dist/module/meta/entity.module.js +0 -7
- package/dist/module/meta/entity.module.js.map +1 -1
- package/dist/module/meta/repository/attribute-master.repository.js +2 -2
- package/dist/module/meta/repository/attribute-master.repository.js.map +1 -1
- package/dist/module/meta/repository/entity-master.repository.js +1 -1
- package/dist/module/meta/repository/entity-master.repository.js.map +1 -1
- package/dist/module/meta/service/attribute-master.service.js +1 -1
- package/dist/module/meta/service/attribute-master.service.js.map +1 -1
- package/dist/module/meta/service/entity-dynamic.service.js +27 -27
- package/dist/module/meta/service/entity-dynamic.service.js.map +1 -1
- package/dist/module/meta/service/entity-list.service.js +3 -3
- package/dist/module/meta/service/entity-master.service.js +4 -4
- package/dist/module/meta/service/entity-master.service.js.map +1 -1
- package/dist/module/meta/service/entity-relation.service.js +13 -13
- package/dist/module/meta/service/entity-relation.service.js.map +1 -1
- package/dist/module/meta/service/entity-service-impl.service.js +3 -3
- package/dist/module/meta/service/media-data.service.js +9 -9
- package/dist/module/meta/service/media-data.service.js.map +1 -1
- package/dist/module/meta/service/resolver.service.js +19 -19
- package/dist/module/meta/service/resolver.service.js.map +1 -1
- package/dist/module/module/repository/menu.repository.js +12 -12
- package/dist/module/notification/entity/otp.entity.js +1 -1
- package/dist/module/notification/entity/otp.entity.js.map +1 -1
- package/dist/module/notification/service/notification.service.js +9 -9
- package/dist/module/user/controller/login.controller.js +18 -18
- package/dist/module/user/entity/user-role-mapping.entity.js +1 -1
- package/dist/module/user/entity/user-role-mapping.entity.js.map +1 -1
- package/dist/module/user/service/login.service.js +1 -1
- package/dist/module/user/service/login.service.js.map +1 -1
- package/dist/module/user/service/role.service.js +4 -4
- package/dist/module/user/service/user-session.service.js +4 -4
- package/dist/module/user/service/user-session.service.js.map +1 -1
- package/dist/module/workflow/entity/action-category.entity.d.ts +1 -1
- package/dist/module/workflow/entity/action-category.entity.js +1 -1
- package/dist/module/workflow/entity/action-data.entity.js +1 -1
- package/dist/module/workflow/entity/action-data.entity.js.map +1 -1
- package/dist/module/workflow/entity/action.entity.d.ts +0 -1
- package/dist/module/workflow/entity/action.entity.js +1 -5
- package/dist/module/workflow/entity/action.entity.js.map +1 -1
- package/dist/module/workflow/entity/comm-template.entity.js +1 -1
- package/dist/module/workflow/entity/comm-template.entity.js.map +1 -1
- package/dist/module/workflow/entity/template-attach-mapper.entity.js +1 -1
- package/dist/module/workflow/entity/template-attach-mapper.entity.js.map +1 -1
- package/dist/module/workflow/repository/action-data.repository.js +4 -5
- package/dist/module/workflow/repository/action-data.repository.js.map +1 -1
- package/dist/module/workflow/repository/action.repository.js +21 -21
- package/dist/module/workflow/repository/action.repository.js.map +1 -1
- package/dist/module/workflow/repository/comm-template.repository.js +7 -7
- package/dist/module/workflow/repository/comm-template.repository.js.map +1 -1
- package/dist/module/workflow/repository/form-master.repository.js +3 -3
- package/dist/module/workflow/repository/form-master.repository.js.map +1 -1
- package/dist/module/workflow/repository/stage-group.repository.js +23 -23
- package/dist/module/workflow/repository/stage-movement.repository.js +17 -17
- package/dist/module/workflow/repository/stage-movement.repository.js.map +1 -1
- package/dist/module/workflow/repository/stage.repository.js +8 -8
- package/dist/module/workflow/repository/task.repository.d.ts +1 -3
- package/dist/module/workflow/repository/task.repository.js +3 -8
- package/dist/module/workflow/repository/task.repository.js.map +1 -1
- package/dist/module/workflow/service/action-template-mapping.service.js +22 -22
- package/dist/module/workflow/service/action.service.js +13 -13
- package/dist/module/workflow/service/action.service.js.map +1 -1
- package/dist/module/workflow/service/entity-modification.service.js +6 -6
- package/dist/module/workflow/service/populate-workflow.service.js +8 -8
- package/dist/module/workflow/service/populate-workflow.service.js.map +1 -1
- package/dist/module/workflow/service/stage-group.service.js +6 -6
- package/dist/module/workflow/service/stage-group.service.js.map +1 -1
- package/dist/module/workflow/service/stage.service.js +4 -4
- package/dist/module/workflow/service/stage.service.js.map +1 -1
- package/dist/module/workflow/service/task.service.js +55 -71
- package/dist/module/workflow/service/task.service.js.map +1 -1
- package/dist/module/workflow/service/workflow-list-master.service.js +16 -16
- package/dist/module/workflow/service/workflow-list-master.service.js.map +1 -1
- package/dist/module/workflow/service/workflow-meta.service.js +51 -53
- package/dist/module/workflow/service/workflow-meta.service.js.map +1 -1
- package/dist/module/workflow/service/workflow.service.js +5 -5
- package/dist/module/workflow/service/workflow.service.js.map +1 -1
- package/dist/module/workflow-automation/controller/workflow-automation.controller.d.ts +0 -6
- package/dist/module/workflow-automation/controller/workflow-automation.controller.js +0 -16
- package/dist/module/workflow-automation/controller/workflow-automation.controller.js.map +1 -1
- package/dist/module/workflow-automation/entity/workflow-automation-action.entity.d.ts +1 -1
- package/dist/module/workflow-automation/entity/workflow-automation-action.entity.js +1 -1
- package/dist/module/workflow-automation/entity/workflow-automation.entity.d.ts +0 -2
- package/dist/module/workflow-automation/entity/workflow-automation.entity.js +0 -8
- package/dist/module/workflow-automation/entity/workflow-automation.entity.js.map +1 -1
- package/dist/module/workflow-automation/service/workflow-automation-engine.service.d.ts +1 -1
- package/dist/module/workflow-automation/service/workflow-automation-engine.service.js +1 -1
- package/dist/module/workflow-automation/service/workflow-automation-engine.service.js.map +1 -1
- package/dist/module/workflow-automation/service/workflow-automation.service.d.ts +1 -13
- package/dist/module/workflow-automation/service/workflow-automation.service.js +6 -115
- package/dist/module/workflow-automation/service/workflow-automation.service.js.map +1 -1
- package/dist/module/workflow-automation/workflow-automation.module.js +1 -14
- package/dist/module/workflow-automation/workflow-automation.module.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/utils/service/loggingUtil.service.d.ts +2 -9
- package/dist/utils/service/loggingUtil.service.js +14 -65
- package/dist/utils/service/loggingUtil.service.js.map +1 -1
- package/dist/utils/service/reflection-helper.service.js +3 -3
- package/dist/utils/service/reflection-helper.service.js.map +1 -1
- package/dist/utils/utils.module.js +0 -2
- package/dist/utils/utils.module.js.map +1 -1
- package/docs/modules/event-driven-integration-design.md +91 -91
- package/docs/modules/integration.md +250 -250
- package/eslint.config.mjs +34 -34
- package/nest-cli.json +14 -14
- package/package.json +120 -124
- package/server.log +850 -0
- package/src/app.controller.ts +12 -12
- package/src/app.module.ts +52 -60
- package/src/app.service.ts +8 -8
- package/src/config/config.module.ts +17 -18
- package/src/config/database.config.ts +48 -23
- package/src/constant/global.constant.ts +67 -67
- package/src/core.module.ts +81 -81
- package/src/decorators/roles.decorator.ts +7 -7
- package/src/dtos/response.dto.ts +6 -6
- package/src/dtos/response.ts +5 -5
- package/src/index.ts +1 -1
- package/src/module/auth/auth.module.ts +49 -49
- package/src/module/auth/controller/auth.controller.ts +28 -28
- package/src/module/auth/guards/google-auth.guard.ts +9 -9
- package/src/module/auth/guards/jwt.guard.ts +22 -22
- package/src/module/auth/guards/role.guard.ts +68 -68
- package/src/module/auth/services/auth.service.ts +50 -50
- package/src/module/auth/services/jwt.service.ts +11 -11
- package/src/module/auth/strategies/google.strategy.ts +54 -54
- package/src/module/auth/strategies/jwt.strategy.ts +58 -58
- package/src/module/auth/strategies/local.strategy.ts +13 -13
- package/src/module/dashboard/controller/dashboard.controller.ts +36 -36
- package/src/module/dashboard/dashboard.module.ts +21 -21
- package/src/module/dashboard/entity/dashboard_page_data.entity.ts +27 -27
- package/src/module/dashboard/entity/widget_master.entity.ts +18 -18
- package/src/module/dashboard/repository/dashboard.repository.ts +42 -42
- package/src/module/dashboard/service/dashboard.service.ts +73 -73
- package/src/module/dev/dev.module.ts +12 -12
- package/src/module/dev/service/dev.service.ts +7 -7
- package/src/module/enterprise/controller/organization.controller.ts +36 -36
- package/src/module/enterprise/enterprise.module.ts +30 -30
- package/src/module/enterprise/entity/enterprise.entity.ts +37 -37
- package/src/module/enterprise/entity/organization-app-mapping.entity.ts +13 -13
- package/src/module/enterprise/entity/organization.entity.ts +92 -92
- package/src/module/enterprise/repository/enterprise.repository.ts +31 -31
- package/src/module/enterprise/repository/organization.repository.ts +26 -26
- package/src/module/enterprise/repository/school.repository.ts +278 -278
- package/src/module/enterprise/service/brand.service.ts +5 -5
- package/src/module/enterprise/service/enterprise.service.ts +16 -16
- package/src/module/enterprise/service/organization-app-mapping.service.ts +4 -4
- package/src/module/enterprise/service/organization.service.ts +145 -145
- package/src/module/filter/controller/filter.controller.ts +84 -84
- package/src/module/filter/dto/filter-request.dto.ts +38 -38
- package/src/module/filter/entity/saved-filter-detail.entity.ts +41 -41
- package/src/module/filter/entity/saved-filter-master.entity.ts +23 -23
- package/src/module/filter/filter.module.ts +31 -31
- package/src/module/filter/repository/saved-filter.repository.ts +168 -168
- package/src/module/filter/service/filter-evaluator.service.ts +86 -86
- package/src/module/filter/service/filter.service.ts +1034 -1005
- package/src/module/filter/service/saved-filter.service.ts +170 -170
- package/src/module/ics/controller/ics.controller.ts +21 -21
- package/src/module/ics/dto/ics.dto.ts +55 -55
- package/src/module/ics/ics.module.ts +13 -13
- package/src/module/ics/service/ics.service.ts +57 -57
- package/src/module/integration/controller/calender-event.controller.ts +31 -31
- package/src/module/integration/controller/integration.controller.ts +662 -662
- package/src/module/integration/controller/wrapper.controller.ts +37 -37
- package/src/module/integration/dto/create-config.dto.ts +526 -526
- package/src/module/integration/entity/integration-config.entity.ts +112 -112
- package/src/module/integration/entity/integration-entity-mapper.entity.ts +14 -14
- package/src/module/integration/entity/integration-source.entity.ts +17 -17
- package/src/module/integration/entity/user-integration.entity.ts +71 -71
- package/src/module/integration/examples/usage.example.ts +338 -338
- package/src/module/integration/factories/base.factory.ts +7 -7
- package/src/module/integration/factories/email.factory.ts +49 -49
- package/src/module/integration/factories/integration.factory.ts +121 -121
- package/src/module/integration/factories/sms.factory.ts +51 -51
- package/src/module/integration/factories/telephone.factory.ts +41 -41
- package/src/module/integration/factories/whatsapp.factory.ts +56 -56
- package/src/module/integration/integration.module.ts +110 -110
- package/src/module/integration/service/calendar-event.service.ts +118 -118
- package/src/module/integration/service/integration-entity-mapper.service.ts +17 -17
- package/src/module/integration/service/integration-queue.service.ts +229 -229
- package/src/module/integration/service/integration.service.ts +2633 -2633
- package/src/module/integration/service/oauth.service.ts +224 -224
- package/src/module/integration/service/wrapper.service.ts +494 -700
- package/src/module/integration/strategies/email/gmail-api.strategy.ts +280 -280
- package/src/module/integration/strategies/email/outlook-api.strategy.ts +44 -44
- package/src/module/integration/strategies/email/outlook.strategy.ts +64 -64
- package/src/module/integration/strategies/email/sendgrid-api.strategy.ts +260 -260
- package/src/module/integration/strategies/integration.strategy.ts +97 -97
- package/src/module/integration/strategies/sms/gupshup-sms.strategy.ts +146 -146
- package/src/module/integration/strategies/sms/msg91-sms.strategy.ts +164 -164
- package/src/module/integration/strategies/sms/tubelight-sms.strategy.ts +163 -163
- package/src/module/integration/strategies/telephone/ozonetel-voice.strategy.ts +238 -238
- package/src/module/integration/strategies/telephone/tubelight-voice.strategy.ts +210 -210
- package/src/module/integration/strategies/whatsapp/gupshup-whatsapp.strategy.ts +359 -359
- package/src/module/integration/strategies/whatsapp/tubelight-whatsapp.strategy.ts +372 -372
- package/src/module/integration/strategies/whatsapp/whatsapp-cloud.strategy.ts +403 -403
- package/src/module/integration/strategies/whatsapp/whatsapp.strategy.ts +57 -57
- package/src/module/layout/controller/layout.controller.ts +47 -47
- package/src/module/layout/entity/header-items.entity.ts +28 -28
- package/src/module/layout/entity/header-section.entity.ts +19 -19
- package/src/module/layout/layout.module.ts +21 -21
- package/src/module/layout/repository/header-items.repository.ts +18 -18
- package/src/module/layout/repository/header-section.repository.ts +22 -22
- package/src/module/layout/service/header-section.service.ts +25 -25
- package/src/module/layout_preference/controller/layout_preference.controller.ts +73 -73
- package/src/module/layout_preference/entity/layout_preference.entity.ts +28 -28
- package/src/module/layout_preference/layout_preference.module.ts +22 -22
- package/src/module/layout_preference/repository/layout_preference.repository.ts +65 -65
- package/src/module/layout_preference/service/layout_preference.service.ts +191 -191
- package/src/module/lead/controller/lead.controller.ts +30 -30
- package/src/module/lead/lead.module.ts +14 -14
- package/src/module/lead/repository/lead.repository.ts +41 -41
- package/src/module/lead/service/lead.service.ts +54 -54
- package/src/module/listmaster/controller/list-master.controller.ts +230 -230
- package/src/module/listmaster/entity/list-master-items.entity.ts +43 -43
- package/src/module/listmaster/entity/list-master.entity.ts +33 -33
- package/src/module/listmaster/listmaster.module.ts +46 -46
- package/src/module/listmaster/repository/list-master-items.repository.ts +169 -169
- package/src/module/listmaster/repository/list-master.repository.ts +46 -46
- package/src/module/listmaster/service/list-master-engine.ts +19 -19
- package/src/module/listmaster/service/list-master-extension.interface.ts +4 -4
- package/src/module/listmaster/service/list-master-item.service.ts +292 -292
- package/src/module/listmaster/service/list-master-registry.ts +15 -15
- package/src/module/listmaster/service/list-master.service.ts +535 -535
- package/src/module/mapper/controller/field-mapper.controller.ts +76 -76
- package/src/module/mapper/controller/mapper.controller.ts +20 -20
- package/src/module/mapper/dto/field-mapper.dto.ts +14 -14
- package/src/module/mapper/entity/field-lovs.entity.ts +19 -19
- package/src/module/mapper/entity/field-mapper.entity.ts +53 -53
- package/src/module/mapper/entity/mapper.entity.ts +16 -16
- package/src/module/mapper/mapper.module.ts +34 -34
- package/src/module/mapper/repository/field-lovs.repository.ts +35 -35
- package/src/module/mapper/repository/field-mapper.repository.ts +42 -42
- package/src/module/mapper/repository/mapper.repository.ts +15 -15
- package/src/module/mapper/service/field-mapper.service.ts +266 -271
- package/src/module/mapper/service/mapper.service.ts +79 -79
- package/src/module/master/controller/master.controller.ts +74 -74
- package/src/module/master/service/master.service.ts +483 -483
- package/src/module/meta/controller/app-master.controller.ts +38 -38
- package/src/module/meta/controller/attribute-master.controller.ts +66 -74
- package/src/module/meta/controller/entity-dynamic.controller.ts +125 -125
- package/src/module/meta/controller/entity-master.controller.ts +28 -28
- package/src/module/meta/controller/entity-relation.controller.ts +36 -36
- package/src/module/meta/controller/entity.controller.ts +392 -392
- package/src/module/meta/controller/entity.public.controller.ts +75 -75
- package/src/module/meta/controller/media.controller.ts +107 -107
- package/src/module/meta/controller/meta.controller.ts +96 -96
- package/src/module/meta/controller/view-master.controller.ts +86 -86
- package/src/module/meta/dto/entity-list-data.dto.ts +6 -6
- package/src/module/meta/dto/entity-tab.dto.ts +4 -4
- package/src/module/meta/dto/entity-table.dto.ts +9 -9
- package/src/module/meta/entity/app-master.entity.ts +34 -34
- package/src/module/meta/entity/attribute-master.entity.ts +89 -89
- package/src/module/meta/entity/base-entity.entity.ts +75 -75
- package/src/module/meta/entity/entity-master.entity.ts +85 -85
- package/src/module/meta/entity/entity-relation-data.entity.ts +29 -29
- package/src/module/meta/entity/entity-relation.entity.ts +23 -23
- package/src/module/meta/entity/entity-table-column.entity.ts +61 -61
- package/src/module/meta/entity/entity-table.entity.ts +50 -50
- package/src/module/meta/entity/media-data.entity.ts +32 -32
- package/src/module/meta/entity/preference.entity.ts +62 -62
- package/src/module/meta/entity/view-master.entity.ts +41 -41
- package/src/module/meta/entity.module.ts +158 -166
- package/src/module/meta/repository/app-master.repository.ts +20 -20
- package/src/module/meta/repository/attribute-master.repository.ts +118 -118
- package/src/module/meta/repository/entity-master.repository.ts +69 -69
- package/src/module/meta/repository/entity-table-column.repository.ts +39 -39
- package/src/module/meta/repository/entity-table.repository.ts +53 -53
- package/src/module/meta/repository/media-data.repository.ts +50 -50
- package/src/module/meta/repository/preference.repository.ts +20 -20
- package/src/module/meta/repository/user-app-mapping.repository.ts +28 -28
- package/src/module/meta/repository/view-master.repository.ts +42 -42
- package/src/module/meta/service/app-master.service.ts +37 -37
- package/src/module/meta/service/attribute-master.service.ts +126 -126
- package/src/module/meta/service/common.service.ts +9 -9
- package/src/module/meta/service/entity-dynamic.service.ts +819 -819
- package/src/module/meta/service/entity-list.service.ts +205 -205
- package/src/module/meta/service/entity-master.service.ts +169 -169
- package/src/module/meta/service/entity-realation-data.service.ts +9 -9
- package/src/module/meta/service/entity-relation.service.ts +69 -69
- package/src/module/meta/service/entity-service-impl.service.ts +525 -525
- package/src/module/meta/service/entity-table-column.service.ts +39 -39
- package/src/module/meta/service/entity-table.service.ts +150 -150
- package/src/module/meta/service/entity-validation.service.ts +187 -187
- package/src/module/meta/service/entity.service.ts +67 -67
- package/src/module/meta/service/field-group.service.ts +103 -103
- package/src/module/meta/service/media-data.service.ts +507 -507
- package/src/module/meta/service/populate-meta.service.ts +193 -193
- package/src/module/meta/service/preference.service.ts +16 -16
- package/src/module/meta/service/resolver.service.ts +267 -267
- package/src/module/meta/service/section-master.service.ts +104 -104
- package/src/module/meta/service/update-form-json.service.ts +22 -22
- package/src/module/meta/service/user-app-mapping.service.ts +17 -17
- package/src/module/meta/service/view-master.service.ts +127 -127
- package/src/module/microservice-client/microservice-clients.module.ts +13 -13
- package/src/module/microservice-client/service/microservice-client-factory.ts +37 -37
- package/src/module/microservice-client/service/microservice-clients.ts +4 -4
- package/src/module/module/controller/menu.controller.ts +15 -15
- package/src/module/module/controller/module-access.controller.ts +134 -134
- package/src/module/module/entity/menu.entity.ts +43 -43
- package/src/module/module/entity/module-access.entity.ts +25 -25
- package/src/module/module/entity/module-action.entity.ts +17 -17
- package/src/module/module/entity/module.entity.ts +52 -52
- package/src/module/module/module.module.ts +42 -42
- package/src/module/module/repository/menu.repository.ts +184 -184
- package/src/module/module/repository/module-access.repository.ts +344 -344
- package/src/module/module/service/menu.service.ts +82 -82
- package/src/module/module/service/module-access.service.ts +209 -209
- package/src/module/notification/controller/notification.controller.ts +58 -58
- package/src/module/notification/controller/otp.controller.ts +117 -117
- package/src/module/notification/entity/notification.entity.ts +26 -26
- package/src/module/notification/entity/otp.entity.ts +28 -28
- package/src/module/notification/firebase-admin.config.ts +22 -22
- package/src/module/notification/notification.module.ts +69 -69
- package/src/module/notification/repository/otp.repository.ts +27 -27
- package/src/module/notification/service/email.service.ts +127 -127
- package/src/module/notification/service/notification.service.ts +163 -163
- package/src/module/notification/service/otp.service.ts +132 -132
- package/src/module/third-party-module/entity/third-party-api-registry.entity.ts +52 -52
- package/src/module/third-party-module/repository/third-party-api-registry.repository.ts +20 -20
- package/src/module/third-party-module/service/api-registry.service.ts +13 -13
- package/src/module/third-party-module/third-party.module.ts +12 -12
- package/src/module/user/controller/login.controller.ts +197 -197
- package/src/module/user/controller/user.controller.ts +40 -40
- package/src/module/user/dto/create-user.dto.ts +62 -62
- package/src/module/user/dto/update-user.dto.ts +4 -4
- package/src/module/user/entity/role.entity.ts +33 -33
- package/src/module/user/entity/user-role-mapping.entity.ts +38 -38
- package/src/module/user/entity/user-session.entity.ts +73 -73
- package/src/module/user/entity/user.entity.ts +59 -59
- package/src/module/user/repository/role.repository.ts +96 -96
- package/src/module/user/repository/user-role-mapping.repository.ts +126 -126
- package/src/module/user/repository/user.repository.ts +50 -50
- package/src/module/user/repository/userSession.repository.ts +33 -33
- package/src/module/user/service/login.service.ts +304 -304
- package/src/module/user/service/role.service.ts +189 -189
- package/src/module/user/service/user-role-mapping.service.ts +98 -98
- package/src/module/user/service/user-session.service.ts +168 -168
- package/src/module/user/service/user.service.ts +365 -365
- package/src/module/user/user.module.ts +65 -65
- package/src/module/workflow/controller/action-category.controller.ts +54 -54
- package/src/module/workflow/controller/action-resource-mapping.controller.ts +23 -23
- package/src/module/workflow/controller/action-template-mapping.controller.ts +35 -35
- package/src/module/workflow/controller/action.controller.ts +111 -111
- package/src/module/workflow/controller/activity-log.controller.ts +55 -55
- package/src/module/workflow/controller/comm-template.controller.ts +43 -43
- package/src/module/workflow/controller/entity-modification.controller.ts +35 -35
- package/src/module/workflow/controller/form-master.controller.ts +43 -43
- package/src/module/workflow/controller/stage-group.controller.ts +48 -48
- package/src/module/workflow/controller/stage.controller.ts +50 -50
- package/src/module/workflow/controller/task.controller.ts +77 -77
- package/src/module/workflow/controller/workflow-list-master.controller.ts +44 -44
- package/src/module/workflow/controller/workflow-meta.controller.ts +80 -80
- package/src/module/workflow/controller/workflow.controller.ts +67 -67
- package/src/module/workflow/entity/action-category.entity.ts +38 -38
- package/src/module/workflow/entity/action-data.entity.ts +55 -55
- package/src/module/workflow/entity/action-resources-mapping.entity.ts +29 -29
- package/src/module/workflow/entity/action-template-mapping.entity.ts +17 -17
- package/src/module/workflow/entity/action.entity.ts +50 -53
- package/src/module/workflow/entity/activity-log.entity.ts +43 -43
- package/src/module/workflow/entity/comm-template.entity.ts +43 -43
- package/src/module/workflow/entity/entity-modification.entity.ts +38 -38
- package/src/module/workflow/entity/form.entity.ts +25 -25
- package/src/module/workflow/entity/stage-action-mapping.entity.ts +17 -17
- package/src/module/workflow/entity/stage-group.entity.ts +23 -23
- package/src/module/workflow/entity/stage-movement-data.entity.ts +38 -38
- package/src/module/workflow/entity/stage.entity.ts +20 -20
- package/src/module/workflow/entity/task-data.entity.ts +88 -88
- package/src/module/workflow/entity/template-attach-mapper.entity.ts +30 -30
- package/src/module/workflow/entity/workflow-data.entity.ts +11 -11
- package/src/module/workflow/entity/workflow-level-mapping.entity.ts +18 -18
- package/src/module/workflow/entity/workflow.entity.ts +20 -20
- package/src/module/workflow/repository/action-category.repository.ts +79 -79
- package/src/module/workflow/repository/action-data.repository.ts +333 -334
- package/src/module/workflow/repository/action.repository.ts +323 -323
- package/src/module/workflow/repository/activity-log.repository.ts +148 -148
- package/src/module/workflow/repository/comm-template.repository.ts +149 -149
- package/src/module/workflow/repository/form-master.repository.ts +59 -59
- package/src/module/workflow/repository/stage-group.repository.ts +176 -176
- package/src/module/workflow/repository/stage-movement.repository.ts +244 -244
- package/src/module/workflow/repository/stage.repository.ts +172 -172
- package/src/module/workflow/repository/task.repository.ts +127 -134
- package/src/module/workflow/repository/workflow.repository.ts +42 -42
- package/src/module/workflow/service/action-category.service.ts +33 -33
- package/src/module/workflow/service/action-data.service.ts +62 -62
- package/src/module/workflow/service/action-resources-mapping.service.ts +10 -10
- package/src/module/workflow/service/action-template-mapping.service.ts +106 -106
- package/src/module/workflow/service/action.service.ts +279 -279
- package/src/module/workflow/service/activity-log.service.ts +107 -107
- package/src/module/workflow/service/comm-template.service.ts +180 -180
- package/src/module/workflow/service/entity-modification.service.ts +67 -67
- package/src/module/workflow/service/form-master.service.ts +35 -35
- package/src/module/workflow/service/populate-workflow.service.ts +303 -303
- package/src/module/workflow/service/stage-action-mapping.service.ts +5 -5
- package/src/module/workflow/service/stage-group.service.ts +319 -319
- package/src/module/workflow/service/stage.service.ts +199 -199
- package/src/module/workflow/service/task.service.ts +560 -575
- package/src/module/workflow/service/workflow-list-master.service.ts +60 -60
- package/src/module/workflow/service/workflow-meta.service.ts +640 -654
- package/src/module/workflow/service/workflow.service.ts +205 -205
- package/src/module/workflow/workflow.module.ts +176 -176
- package/src/module/workflow-automation/controller/workflow-automation.controller.ts +21 -43
- package/src/module/workflow-automation/entity/workflow-automation-action.entity.ts +26 -26
- package/src/module/workflow-automation/entity/workflow-automation.entity.ts +35 -40
- package/src/module/workflow-automation/interface/action.decorator.ts +7 -7
- package/src/module/workflow-automation/interface/action.interface.ts +5 -5
- package/src/module/workflow-automation/service/action-registery.service.ts +35 -35
- package/src/module/workflow-automation/service/workflow-automation-engine.service.ts +214 -214
- package/src/module/workflow-automation/service/workflow-automation.service.ts +347 -508
- package/src/module/workflow-automation/workflow-automation.module.ts +34 -47
- package/src/resources/dev.properties.yaml +31 -30
- package/src/resources/local.properties.yaml +27 -27
- package/src/resources/properties.module.ts +12 -12
- package/src/resources/properties.yaml.ts +11 -11
- package/src/resources/uat.properties.yaml +31 -31
- package/src/table.config.ts +126 -126
- package/src/utils/dto/excel-data.dto.ts +14 -14
- package/src/utils/dto/excelsheet-data.dto.ts +5 -5
- package/src/utils/service/base64util.service.ts +18 -18
- package/src/utils/service/clockIDGenUtil.service.ts +21 -21
- package/src/utils/service/codeGenerator.service.ts +22 -22
- package/src/utils/service/dateUtil.service.ts +17 -17
- package/src/utils/service/encryptUtil.service.ts +97 -97
- package/src/utils/service/excel-helper.service.ts +72 -72
- package/src/utils/service/excelUtil.service.ts +15 -15
- package/src/utils/service/file-util.service.ts +11 -11
- package/src/utils/service/json-util.service.ts +23 -23
- package/src/utils/service/loggingUtil.service.ts +34 -88
- package/src/utils/service/reflection-helper.service.ts +62 -62
- package/src/utils/service/wbsCodeGen.service.ts +8 -8
- package/src/utils/utils.module.ts +25 -27
- package/tsconfig.build.json +4 -4
- package/tsconfig.json +24 -24
- package/dist/config/bull.config.d.ts +0 -10
- package/dist/config/bull.config.js +0 -66
- package/dist/config/bull.config.js.map +0 -1
- package/dist/module/meta/repository/entity-attribute-update.repository.d.ts +0 -6
- package/dist/module/meta/repository/entity-attribute-update.repository.js +0 -44
- package/dist/module/meta/repository/entity-attribute-update.repository.js.map +0 -1
- package/dist/module/meta/service/entity-attribute-update.service.d.ts +0 -7
- package/dist/module/meta/service/entity-attribute-update.service.js +0 -36
- package/dist/module/meta/service/entity-attribute-update.service.js.map +0 -1
- package/dist/module/workflow-automation/service/schedule-handler.service.d.ts +0 -16
- package/dist/module/workflow-automation/service/schedule-handler.service.js +0 -109
- package/dist/module/workflow-automation/service/schedule-handler.service.js.map +0 -1
- package/dist/module/workflow-schedule/constants/schedule.constants.d.ts +0 -27
- package/dist/module/workflow-schedule/constants/schedule.constants.js +0 -31
- package/dist/module/workflow-schedule/constants/schedule.constants.js.map +0 -1
- package/dist/module/workflow-schedule/controller/workflow-schedule.controller.d.ts +0 -83
- package/dist/module/workflow-schedule/controller/workflow-schedule.controller.js +0 -220
- package/dist/module/workflow-schedule/controller/workflow-schedule.controller.js.map +0 -1
- package/dist/module/workflow-schedule/dto/create-schedule.dto.d.ts +0 -32
- package/dist/module/workflow-schedule/dto/create-schedule.dto.js +0 -163
- package/dist/module/workflow-schedule/dto/create-schedule.dto.js.map +0 -1
- package/dist/module/workflow-schedule/dto/get-execution-logs.dto.d.ts +0 -35
- package/dist/module/workflow-schedule/dto/get-execution-logs.dto.js +0 -124
- package/dist/module/workflow-schedule/dto/get-execution-logs.dto.js.map +0 -1
- package/dist/module/workflow-schedule/dto/update-schedule.dto.d.ts +0 -19
- package/dist/module/workflow-schedule/dto/update-schedule.dto.js +0 -106
- package/dist/module/workflow-schedule/dto/update-schedule.dto.js.map +0 -1
- package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.d.ts +0 -30
- package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.js +0 -113
- package/dist/module/workflow-schedule/entities/scheduled-workflow.entity.js.map +0 -1
- package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.d.ts +0 -34
- package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.js +0 -118
- package/dist/module/workflow-schedule/entities/workflow-execution-log.entity.js.map +0 -1
- package/dist/module/workflow-schedule/interfaces/schedule-job-data.interface.d.ts +0 -44
- package/dist/module/workflow-schedule/interfaces/schedule-job-data.interface.js +0 -3
- package/dist/module/workflow-schedule/interfaces/schedule-job-data.interface.js.map +0 -1
- package/dist/module/workflow-schedule/processors/schedule.processor.d.ts +0 -31
- package/dist/module/workflow-schedule/processors/schedule.processor.js +0 -409
- package/dist/module/workflow-schedule/processors/schedule.processor.js.map +0 -1
- package/dist/module/workflow-schedule/service/workflow-schedule.service.d.ts +0 -44
- package/dist/module/workflow-schedule/service/workflow-schedule.service.js +0 -434
- package/dist/module/workflow-schedule/service/workflow-schedule.service.js.map +0 -1
- package/dist/module/workflow-schedule/workflow-schedule.module.d.ts +0 -2
- package/dist/module/workflow-schedule/workflow-schedule.module.js +0 -44
- package/dist/module/workflow-schedule/workflow-schedule.module.js.map +0 -1
- package/src/config/bull.config.ts +0 -69
- package/src/module/meta/repository/entity-attribute-update.repository.ts +0 -44
- package/src/module/meta/service/entity-attribute-update.service.ts +0 -29
- package/src/module/workflow-automation/service/schedule-handler.service.ts +0 -150
- package/src/module/workflow-schedule/INSTALLATION.md +0 -244
- package/src/module/workflow-schedule/README.md +0 -422
- package/src/module/workflow-schedule/constants/schedule.constants.ts +0 -48
- package/src/module/workflow-schedule/controller/workflow-schedule.controller.ts +0 -255
- package/src/module/workflow-schedule/docs/CLAUDE_CODE_GUIDE.md +0 -510
- package/src/module/workflow-schedule/docs/CLAUDE_CODE_PROMPT.md +0 -362
- package/src/module/workflow-schedule/docs/RUN_CLAUDE_CODE.sh +0 -68
- package/src/module/workflow-schedule/dto/create-schedule.dto.ts +0 -147
- package/src/module/workflow-schedule/dto/get-execution-logs.dto.ts +0 -119
- package/src/module/workflow-schedule/dto/update-schedule.dto.ts +0 -96
- package/src/module/workflow-schedule/entities/scheduled-workflow.entity.ts +0 -148
- package/src/module/workflow-schedule/entities/workflow-execution-log.entity.ts +0 -154
- package/src/module/workflow-schedule/interfaces/schedule-job-data.interface.ts +0 -53
- package/src/module/workflow-schedule/processors/schedule.processor.ts +0 -584
- package/src/module/workflow-schedule/service/workflow-schedule.service.ts +0 -600
- package/src/module/workflow-schedule/workflow-schedule.module.ts +0 -43
|
@@ -1,422 +0,0 @@
|
|
|
1
|
-
# Workflow Schedule Module
|
|
2
|
-
|
|
3
|
-
A comprehensive NestJS module for scheduling and executing workflows using Bull queues and Redis.
|
|
4
|
-
|
|
5
|
-
## Features
|
|
6
|
-
|
|
7
|
-
- ✅ Schedule workflows with cron expressions
|
|
8
|
-
- ✅ Timezone support (IANA timezone format)
|
|
9
|
-
- ✅ Pause/resume schedules
|
|
10
|
-
- ✅ Manual trigger execution
|
|
11
|
-
- ✅ Comprehensive execution logging
|
|
12
|
-
- ✅ Retry with exponential backoff
|
|
13
|
-
- ✅ Batch processing (100 records per batch)
|
|
14
|
-
- ✅ Multiple action types:
|
|
15
|
-
- Send Email
|
|
16
|
-
- Update Records
|
|
17
|
-
- Create Tasks
|
|
18
|
-
- Send Notifications
|
|
19
|
-
|
|
20
|
-
## Installation
|
|
21
|
-
|
|
22
|
-
### 1. Install Required Dependencies
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
npm install @nestjs/bull bull redis cron-parser
|
|
26
|
-
npm install --save-dev @types/bull
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Note: `cron-parser` includes its own TypeScript definitions, so no separate `@types` package is needed.
|
|
30
|
-
|
|
31
|
-
### 2. Configure Redis
|
|
32
|
-
|
|
33
|
-
Add Redis configuration to your `.env` file:
|
|
34
|
-
|
|
35
|
-
```env
|
|
36
|
-
REDIS_HOST=localhost
|
|
37
|
-
REDIS_PORT=6379
|
|
38
|
-
REDIS_PASSWORD=
|
|
39
|
-
REDIS_DB=0
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### 3. Run Migrations
|
|
43
|
-
|
|
44
|
-
The module includes three migrations:
|
|
45
|
-
|
|
46
|
-
1. **AddWorkflowTypeColumn** - Adds `workflow_type` to `cr_wf_master` table
|
|
47
|
-
2. **CreateScheduledWorkflowsTable** - Creates `cr_wf_scheduled_workflow` table
|
|
48
|
-
3. **CreateWorkflowExecutionLogsTable** - Creates `cr_wf_execution_log` table
|
|
49
|
-
|
|
50
|
-
To run migrations:
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
# Using TypeORM CLI
|
|
54
|
-
npx typeorm migration:run -d src/config/database.config.ts
|
|
55
|
-
|
|
56
|
-
# Or using npm script (if configured)
|
|
57
|
-
npm run migration:run
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### 4. Start Redis Server
|
|
61
|
-
|
|
62
|
-
Make sure Redis is running:
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
# If using Docker
|
|
66
|
-
docker run -d -p 6379:6379 redis
|
|
67
|
-
|
|
68
|
-
# If installed locally
|
|
69
|
-
redis-server
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
## Module Structure
|
|
73
|
-
|
|
74
|
-
```
|
|
75
|
-
src/module/workflow-schedule/
|
|
76
|
-
├── constants/
|
|
77
|
-
│ └── schedule.constants.ts # Constants and enums
|
|
78
|
-
├── interfaces/
|
|
79
|
-
│ └── schedule-job-data.interface.ts # TypeScript interfaces
|
|
80
|
-
├── entities/
|
|
81
|
-
│ ├── scheduled-workflow.entity.ts # ScheduledWorkflow entity
|
|
82
|
-
│ └── workflow-execution-log.entity.ts # WorkflowExecutionLog entity
|
|
83
|
-
├── dto/
|
|
84
|
-
│ ├── create-schedule.dto.ts # Create schedule DTO
|
|
85
|
-
│ ├── update-schedule.dto.ts # Update schedule DTO
|
|
86
|
-
│ └── get-execution-logs.dto.ts # Query execution logs DTO
|
|
87
|
-
├── processors/
|
|
88
|
-
│ └── schedule.processor.ts # Bull job processor
|
|
89
|
-
├── service/
|
|
90
|
-
│ └── workflow-schedule.service.ts # Business logic (9 methods)
|
|
91
|
-
├── controller/
|
|
92
|
-
│ └── workflow-schedule.controller.ts # REST API (9 endpoints)
|
|
93
|
-
└── workflow-schedule.module.ts # Module definition
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## API Endpoints
|
|
97
|
-
|
|
98
|
-
### 1. Create Schedule
|
|
99
|
-
```http
|
|
100
|
-
POST /workflow-schedule/create
|
|
101
|
-
Authorization: Bearer <token>
|
|
102
|
-
|
|
103
|
-
{
|
|
104
|
-
"workflow_id": 1,
|
|
105
|
-
"workflow_name": "Daily Lead Assignment",
|
|
106
|
-
"name": "Assign leads every morning",
|
|
107
|
-
"description": "Automatically assign new leads to sales team",
|
|
108
|
-
"cron_expression": "0 9 * * 1-5",
|
|
109
|
-
"timezone": "Asia/Kolkata",
|
|
110
|
-
"actions": [
|
|
111
|
-
{
|
|
112
|
-
"actionType": "UPDATE_RECORDS",
|
|
113
|
-
"targetEntityType": "LEAD",
|
|
114
|
-
"actionConfig": {
|
|
115
|
-
"updateFields": {
|
|
116
|
-
"status": "ASSIGNED"
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
]
|
|
121
|
-
}
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
### 2. Update Schedule
|
|
125
|
-
```http
|
|
126
|
-
PUT /workflow-schedule/update
|
|
127
|
-
|
|
128
|
-
{
|
|
129
|
-
"id": 1,
|
|
130
|
-
"cron_expression": "0 10 * * 1-5"
|
|
131
|
-
}
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
### 3. Get Schedule by ID
|
|
135
|
-
```http
|
|
136
|
-
GET /workflow-schedule/:id
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
### 4. Get All Schedules
|
|
140
|
-
```http
|
|
141
|
-
GET /workflow-schedule/list?page=1&size=10&schedule_status=ACTIVE
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### 5. Pause Schedule
|
|
145
|
-
```http
|
|
146
|
-
POST /workflow-schedule/:id/pause
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### 6. Resume Schedule
|
|
150
|
-
```http
|
|
151
|
-
POST /workflow-schedule/:id/resume
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
### 7. Delete Schedule
|
|
155
|
-
```http
|
|
156
|
-
DELETE /workflow-schedule/:id
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
### 8. Manual Trigger
|
|
160
|
-
```http
|
|
161
|
-
POST /workflow-schedule/:id/trigger
|
|
162
|
-
|
|
163
|
-
{
|
|
164
|
-
"metadata": {
|
|
165
|
-
"triggered_reason": "Testing"
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
### 9. Get Execution Logs
|
|
171
|
-
```http
|
|
172
|
-
POST /workflow-schedule/execution-logs
|
|
173
|
-
|
|
174
|
-
{
|
|
175
|
-
"schedule_id": 1,
|
|
176
|
-
"execution_status": "COMPLETED",
|
|
177
|
-
"page": 1,
|
|
178
|
-
"size": 10
|
|
179
|
-
}
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
### 10. Get Execution Statistics
|
|
183
|
-
```http
|
|
184
|
-
GET /workflow-schedule/:id/stats
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
## Service Methods
|
|
188
|
-
|
|
189
|
-
The `WorkflowScheduleService` provides 9 core methods:
|
|
190
|
-
|
|
191
|
-
1. **createSchedule** - Create a new scheduled workflow
|
|
192
|
-
2. **updateSchedule** - Update an existing schedule
|
|
193
|
-
3. **getScheduleById** - Get schedule by ID
|
|
194
|
-
4. **getAllSchedules** - Get all schedules with pagination
|
|
195
|
-
5. **pauseSchedule** - Pause a running schedule
|
|
196
|
-
6. **resumeSchedule** - Resume a paused schedule
|
|
197
|
-
7. **deleteSchedule** - Delete (soft delete) a schedule
|
|
198
|
-
8. **triggerManualExecution** - Manually trigger execution
|
|
199
|
-
9. **getExecutionLogs** - Query execution logs with filters
|
|
200
|
-
|
|
201
|
-
## Cron Expression Examples
|
|
202
|
-
|
|
203
|
-
```javascript
|
|
204
|
-
// Every day at 9 AM
|
|
205
|
-
"0 9 * * *"
|
|
206
|
-
|
|
207
|
-
// Every weekday at 9 AM
|
|
208
|
-
"0 9 * * 1-5"
|
|
209
|
-
|
|
210
|
-
// Every hour
|
|
211
|
-
"0 * * * *"
|
|
212
|
-
|
|
213
|
-
// Every 30 minutes
|
|
214
|
-
"*/30 * * * *"
|
|
215
|
-
|
|
216
|
-
// First day of every month at midnight
|
|
217
|
-
"0 0 1 * *"
|
|
218
|
-
|
|
219
|
-
// Every Monday at 8 AM
|
|
220
|
-
"0 8 * * 1"
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
## Action Types
|
|
224
|
-
|
|
225
|
-
### 1. Send Email
|
|
226
|
-
```json
|
|
227
|
-
{
|
|
228
|
-
"actionType": "SEND_EMAIL",
|
|
229
|
-
"targetEntityType": "USR",
|
|
230
|
-
"actionConfig": {
|
|
231
|
-
"subject": "Weekly Report",
|
|
232
|
-
"template": "weekly-report-template",
|
|
233
|
-
"from": "noreply@example.com"
|
|
234
|
-
},
|
|
235
|
-
"filterCriteria": {
|
|
236
|
-
"status": "ACTIVE"
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
### 2. Update Records
|
|
242
|
-
```json
|
|
243
|
-
{
|
|
244
|
-
"actionType": "UPDATE_RECORDS",
|
|
245
|
-
"targetEntityType": "LEAD",
|
|
246
|
-
"actionConfig": {
|
|
247
|
-
"updateFields": {
|
|
248
|
-
"status": "FOLLOW_UP",
|
|
249
|
-
"last_contacted": "NOW()"
|
|
250
|
-
}
|
|
251
|
-
},
|
|
252
|
-
"filterCriteria": {
|
|
253
|
-
"status": "NEW"
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
### 3. Create Task
|
|
259
|
-
```json
|
|
260
|
-
{
|
|
261
|
-
"actionType": "CREATE_TASK",
|
|
262
|
-
"targetEntityType": "LEAD",
|
|
263
|
-
"actionConfig": {
|
|
264
|
-
"taskName": "Follow up with lead",
|
|
265
|
-
"taskDescription": "Scheduled follow-up task"
|
|
266
|
-
},
|
|
267
|
-
"filterCriteria": {
|
|
268
|
-
"status": "QUALIFIED"
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
### 4. Send Notification
|
|
274
|
-
```json
|
|
275
|
-
{
|
|
276
|
-
"actionType": "SEND_NOTIFICATION",
|
|
277
|
-
"targetEntityType": "USR",
|
|
278
|
-
"actionConfig": {
|
|
279
|
-
"eventType": "WORKFLOW_SCHEDULED",
|
|
280
|
-
"message": "Your weekly report is ready"
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
## Retry Configuration
|
|
286
|
-
|
|
287
|
-
```json
|
|
288
|
-
{
|
|
289
|
-
"retry_config": {
|
|
290
|
-
"maxRetries": 3,
|
|
291
|
-
"retryDelay": 5000,
|
|
292
|
-
"backoffMultiplier": 2
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
This will retry failed jobs:
|
|
298
|
-
- 1st retry: after 5 seconds
|
|
299
|
-
- 2nd retry: after 10 seconds (5 * 2)
|
|
300
|
-
- 3rd retry: after 20 seconds (10 * 2)
|
|
301
|
-
|
|
302
|
-
## Monitoring
|
|
303
|
-
|
|
304
|
-
### Check Queue Status
|
|
305
|
-
|
|
306
|
-
Bull provides a web UI for monitoring queues:
|
|
307
|
-
|
|
308
|
-
```bash
|
|
309
|
-
npm install bull-board
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
### View Execution Logs
|
|
313
|
-
|
|
314
|
-
Use the execution logs API to monitor:
|
|
315
|
-
- Success rate
|
|
316
|
-
- Failed executions
|
|
317
|
-
- Average execution time
|
|
318
|
-
- Records processed
|
|
319
|
-
|
|
320
|
-
```http
|
|
321
|
-
GET /workflow-schedule/:id/stats
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
## Database Schema
|
|
325
|
-
|
|
326
|
-
### cr_wf_scheduled_workflow
|
|
327
|
-
- Stores schedule configuration
|
|
328
|
-
- Includes cron expression, timezone, retry config
|
|
329
|
-
- Tracks execution count and next execution time
|
|
330
|
-
|
|
331
|
-
### cr_wf_execution_log
|
|
332
|
-
- Logs every execution
|
|
333
|
-
- Tracks success/failure status
|
|
334
|
-
- Records processing metrics
|
|
335
|
-
- Stores error details
|
|
336
|
-
|
|
337
|
-
## Environment Variables
|
|
338
|
-
|
|
339
|
-
```env
|
|
340
|
-
# Redis Configuration
|
|
341
|
-
REDIS_HOST=localhost
|
|
342
|
-
REDIS_PORT=6379
|
|
343
|
-
REDIS_PASSWORD=
|
|
344
|
-
REDIS_DB=0
|
|
345
|
-
|
|
346
|
-
# Database Configuration
|
|
347
|
-
DB_HOST=localhost
|
|
348
|
-
DB_PORT=3306
|
|
349
|
-
DB_USER=root
|
|
350
|
-
DB_PASS=password
|
|
351
|
-
DB_NAME=core
|
|
352
|
-
```
|
|
353
|
-
|
|
354
|
-
## Testing
|
|
355
|
-
|
|
356
|
-
### Manual Testing
|
|
357
|
-
|
|
358
|
-
1. Create a schedule with a simple cron (e.g., every minute: `* * * * *`)
|
|
359
|
-
2. Check execution logs after 1-2 minutes
|
|
360
|
-
3. Test pause/resume functionality
|
|
361
|
-
4. Test manual trigger
|
|
362
|
-
5. Verify retry mechanism by creating failing actions
|
|
363
|
-
|
|
364
|
-
### Unit Testing
|
|
365
|
-
|
|
366
|
-
```typescript
|
|
367
|
-
import { Test } from '@nestjs/testing';
|
|
368
|
-
import { WorkflowScheduleService } from './workflow-schedule.service';
|
|
369
|
-
|
|
370
|
-
describe('WorkflowScheduleService', () => {
|
|
371
|
-
let service: WorkflowScheduleService;
|
|
372
|
-
|
|
373
|
-
beforeEach(async () => {
|
|
374
|
-
const module = await Test.createTestingModule({
|
|
375
|
-
providers: [WorkflowScheduleService],
|
|
376
|
-
}).compile();
|
|
377
|
-
|
|
378
|
-
service = module.get<WorkflowScheduleService>(WorkflowScheduleService);
|
|
379
|
-
});
|
|
380
|
-
|
|
381
|
-
it('should create a schedule', async () => {
|
|
382
|
-
// Test implementation
|
|
383
|
-
});
|
|
384
|
-
});
|
|
385
|
-
```
|
|
386
|
-
|
|
387
|
-
## Troubleshooting
|
|
388
|
-
|
|
389
|
-
### Redis Connection Issues
|
|
390
|
-
- Verify Redis is running: `redis-cli ping`
|
|
391
|
-
- Check Redis connection settings in `.env`
|
|
392
|
-
|
|
393
|
-
### Jobs Not Processing
|
|
394
|
-
- Check Bull queue status
|
|
395
|
-
- Verify cron expression is valid
|
|
396
|
-
- Check schedule is enabled and active
|
|
397
|
-
|
|
398
|
-
### Migration Issues
|
|
399
|
-
- Ensure database user has CREATE/ALTER permissions
|
|
400
|
-
- Run migrations in order (1, 2, 3)
|
|
401
|
-
|
|
402
|
-
## Performance Considerations
|
|
403
|
-
|
|
404
|
-
- **Batch Size**: Default is 100 records. Adjust based on your use case.
|
|
405
|
-
- **Retry Strategy**: Balance between retry attempts and system load.
|
|
406
|
-
- **Redis Memory**: Monitor Redis memory usage for large queues.
|
|
407
|
-
- **Database Indexes**: Migrations include optimized indexes.
|
|
408
|
-
|
|
409
|
-
## Security
|
|
410
|
-
|
|
411
|
-
- All endpoints are protected with `JwtAuthGuard`
|
|
412
|
-
- Organization-level data isolation
|
|
413
|
-
- Soft delete for schedules (audit trail)
|
|
414
|
-
- Execution logs retention (configurable)
|
|
415
|
-
|
|
416
|
-
## Support
|
|
417
|
-
|
|
418
|
-
For issues or questions:
|
|
419
|
-
1. Check the logs: `src/module/workflow-schedule/`
|
|
420
|
-
2. Review Bull queue status
|
|
421
|
-
3. Check Redis connection
|
|
422
|
-
4. Verify database migrations ran successfully
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Constants for Workflow Schedule Module
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
// Entity Types
|
|
6
|
-
export const SCHEDULED_WORKFLOW = 'WFSC';
|
|
7
|
-
export const WORKFLOW_EXECUTION_LOG = 'WFEL';
|
|
8
|
-
|
|
9
|
-
// Queue Names
|
|
10
|
-
export const WORKFLOW_SCHEDULE_QUEUE = 'workflow-schedule';
|
|
11
|
-
|
|
12
|
-
// Job Names
|
|
13
|
-
export const EXECUTE_SCHEDULED_WORKFLOW_JOB = 'execute-scheduled-workflow';
|
|
14
|
-
|
|
15
|
-
// Schedule Status
|
|
16
|
-
export const SCHEDULE_STATUS_ACTIVE = 'ACTIVE';
|
|
17
|
-
export const SCHEDULE_STATUS_PAUSED = 'PAUSED';
|
|
18
|
-
export const SCHEDULE_STATUS_INACTIVE = 'INACTIVE';
|
|
19
|
-
export const SCHEDULE_STATUS_EXPIRED = 'EXPIRED';
|
|
20
|
-
|
|
21
|
-
// Execution Status
|
|
22
|
-
export const EXECUTION_STATUS_PENDING = 'PENDING';
|
|
23
|
-
export const EXECUTION_STATUS_RUNNING = 'RUNNING';
|
|
24
|
-
export const EXECUTION_STATUS_COMPLETED = 'COMPLETED';
|
|
25
|
-
export const EXECUTION_STATUS_FAILED = 'FAILED';
|
|
26
|
-
export const EXECUTION_STATUS_PARTIAL = 'PARTIAL';
|
|
27
|
-
|
|
28
|
-
// Workflow Types
|
|
29
|
-
export const WORKFLOW_TYPE_AUTOMATED = 'AUTOMATED';
|
|
30
|
-
export const WORKFLOW_TYPE_MANUAL = 'MANUAL';
|
|
31
|
-
export const WORKFLOW_TYPE_SCHEDULED = 'SCHEDULED';
|
|
32
|
-
|
|
33
|
-
// Action Types
|
|
34
|
-
export const ACTION_TYPE_SEND_EMAIL = 'SEND_EMAIL';
|
|
35
|
-
export const ACTION_TYPE_UPDATE_RECORDS = 'UPDATE_RECORDS';
|
|
36
|
-
export const ACTION_TYPE_CREATE_TASK = 'CREATE_TASK';
|
|
37
|
-
export const ACTION_TYPE_SEND_NOTIFICATION = 'SEND_NOTIFICATION';
|
|
38
|
-
|
|
39
|
-
// Default Values
|
|
40
|
-
export const DEFAULT_BATCH_SIZE = 100;
|
|
41
|
-
export const DEFAULT_MAX_RETRIES = 3;
|
|
42
|
-
export const DEFAULT_RETRY_DELAY = 5000; // 5 seconds
|
|
43
|
-
export const DEFAULT_BACKOFF_MULTIPLIER = 2;
|
|
44
|
-
export const DEFAULT_TIMEZONE = 'Asia/Kolkata';
|
|
45
|
-
|
|
46
|
-
// Time Constants
|
|
47
|
-
export const SECONDS_IN_MINUTE = 60;
|
|
48
|
-
export const MILLISECONDS_IN_SECOND = 1000;
|
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Controller,
|
|
3
|
-
Post,
|
|
4
|
-
Get,
|
|
5
|
-
Put,
|
|
6
|
-
Delete,
|
|
7
|
-
Body,
|
|
8
|
-
Param,
|
|
9
|
-
Query,
|
|
10
|
-
Req,
|
|
11
|
-
UseGuards,
|
|
12
|
-
HttpCode,
|
|
13
|
-
HttpStatus,
|
|
14
|
-
ParseIntPipe,
|
|
15
|
-
} from '@nestjs/common';
|
|
16
|
-
import { Request } from 'express';
|
|
17
|
-
import { JwtAuthGuard } from '../../auth/guards/jwt.guard';
|
|
18
|
-
import { WorkflowScheduleService } from '../service/workflow-schedule.service';
|
|
19
|
-
import { CreateScheduleDto } from '../dto/create-schedule.dto';
|
|
20
|
-
import { UpdateScheduleDto } from '../dto/update-schedule.dto';
|
|
21
|
-
import { GetExecutionLogsDto } from '../dto/get-execution-logs.dto';
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Workflow Schedule Controller
|
|
25
|
-
* Provides REST API endpoints for managing scheduled workflows
|
|
26
|
-
*/
|
|
27
|
-
@Controller('workflow-schedule')
|
|
28
|
-
@UseGuards(JwtAuthGuard)
|
|
29
|
-
export class WorkflowScheduleController {
|
|
30
|
-
constructor(private readonly workflowScheduleService: WorkflowScheduleService) {}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* 1. Create a new scheduled workflow
|
|
34
|
-
* POST /workflow-schedule/create
|
|
35
|
-
*/
|
|
36
|
-
@Post('/create')
|
|
37
|
-
@HttpCode(HttpStatus.CREATED)
|
|
38
|
-
async createSchedule(
|
|
39
|
-
@Body() createScheduleDto: CreateScheduleDto,
|
|
40
|
-
@Req() req: Request & { user: any },
|
|
41
|
-
) {
|
|
42
|
-
const loggedInUser = req.user.userData;
|
|
43
|
-
const schedule = await this.workflowScheduleService.createSchedule(
|
|
44
|
-
createScheduleDto,
|
|
45
|
-
loggedInUser,
|
|
46
|
-
);
|
|
47
|
-
|
|
48
|
-
return {
|
|
49
|
-
success: true,
|
|
50
|
-
message: 'Scheduled workflow created successfully',
|
|
51
|
-
data: schedule,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* 2. Update an existing scheduled workflow
|
|
57
|
-
* PUT /workflow-schedule/update
|
|
58
|
-
*/
|
|
59
|
-
@Put('/update')
|
|
60
|
-
@HttpCode(HttpStatus.OK)
|
|
61
|
-
async updateSchedule(
|
|
62
|
-
@Body() updateScheduleDto: UpdateScheduleDto,
|
|
63
|
-
@Req() req: Request & { user: any },
|
|
64
|
-
) {
|
|
65
|
-
const loggedInUser = req.user.userData;
|
|
66
|
-
const schedule = await this.workflowScheduleService.updateSchedule(
|
|
67
|
-
updateScheduleDto,
|
|
68
|
-
loggedInUser,
|
|
69
|
-
);
|
|
70
|
-
|
|
71
|
-
return {
|
|
72
|
-
success: true,
|
|
73
|
-
message: 'Scheduled workflow updated successfully',
|
|
74
|
-
data: schedule,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* 3. Get a scheduled workflow by ID
|
|
80
|
-
* GET /workflow-schedule/:id
|
|
81
|
-
*/
|
|
82
|
-
@Get('/:id')
|
|
83
|
-
@HttpCode(HttpStatus.OK)
|
|
84
|
-
async getScheduleById(
|
|
85
|
-
@Param('id', ParseIntPipe) id: number,
|
|
86
|
-
@Req() req: Request & { user: any },
|
|
87
|
-
) {
|
|
88
|
-
const loggedInUser = req.user.userData;
|
|
89
|
-
const schedule = await this.workflowScheduleService.getScheduleById(id, loggedInUser);
|
|
90
|
-
|
|
91
|
-
return {
|
|
92
|
-
success: true,
|
|
93
|
-
data: schedule,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* 4. Get all scheduled workflows with pagination and filters
|
|
99
|
-
* GET /workflow-schedule/list
|
|
100
|
-
*/
|
|
101
|
-
@Get('/list')
|
|
102
|
-
@HttpCode(HttpStatus.OK)
|
|
103
|
-
async getAllSchedules(
|
|
104
|
-
@Query('workflow_id') workflow_id: string | undefined,
|
|
105
|
-
@Query('schedule_status') schedule_status: string | undefined,
|
|
106
|
-
@Query('is_enabled') is_enabled: string | undefined,
|
|
107
|
-
@Query('page') page: string | undefined,
|
|
108
|
-
@Query('size') size: string | undefined,
|
|
109
|
-
@Req() req: Request & { user: any },
|
|
110
|
-
) {
|
|
111
|
-
const loggedInUser = req.user.userData;
|
|
112
|
-
|
|
113
|
-
const filters: Record<string, any> = {};
|
|
114
|
-
if (workflow_id) filters.workflow_id = Number.parseInt(workflow_id, 10);
|
|
115
|
-
if (schedule_status) filters.schedule_status = schedule_status;
|
|
116
|
-
if (is_enabled !== undefined) filters.is_enabled = is_enabled === 'true';
|
|
117
|
-
|
|
118
|
-
const result = await this.workflowScheduleService.getAllSchedules(
|
|
119
|
-
page ? Number.parseInt(page, 10) : 1,
|
|
120
|
-
size ? Number.parseInt(size, 10) : 10,
|
|
121
|
-
filters,
|
|
122
|
-
loggedInUser,
|
|
123
|
-
);
|
|
124
|
-
|
|
125
|
-
return {
|
|
126
|
-
success: true,
|
|
127
|
-
...result,
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* 5. Pause a scheduled workflow
|
|
133
|
-
* POST /workflow-schedule/:id/pause
|
|
134
|
-
*/
|
|
135
|
-
@Post('/:id/pause')
|
|
136
|
-
@HttpCode(HttpStatus.OK)
|
|
137
|
-
async pauseSchedule(
|
|
138
|
-
@Param('id', ParseIntPipe) id: number,
|
|
139
|
-
@Req() req: Request & { user: any },
|
|
140
|
-
) {
|
|
141
|
-
const loggedInUser = req.user.userData;
|
|
142
|
-
const schedule = await this.workflowScheduleService.pauseSchedule(id, loggedInUser);
|
|
143
|
-
|
|
144
|
-
return {
|
|
145
|
-
success: true,
|
|
146
|
-
message: 'Scheduled workflow paused successfully',
|
|
147
|
-
data: schedule,
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* 6. Resume a paused scheduled workflow
|
|
153
|
-
* POST /workflow-schedule/:id/resume
|
|
154
|
-
*/
|
|
155
|
-
@Post('/:id/resume')
|
|
156
|
-
@HttpCode(HttpStatus.OK)
|
|
157
|
-
async resumeSchedule(
|
|
158
|
-
@Param('id', ParseIntPipe) id: number,
|
|
159
|
-
@Req() req: Request & { user: any },
|
|
160
|
-
) {
|
|
161
|
-
const loggedInUser = req.user.userData;
|
|
162
|
-
const schedule = await this.workflowScheduleService.resumeSchedule(id, loggedInUser);
|
|
163
|
-
|
|
164
|
-
return {
|
|
165
|
-
success: true,
|
|
166
|
-
message: 'Scheduled workflow resumed successfully',
|
|
167
|
-
data: schedule,
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* 7. Delete a scheduled workflow
|
|
173
|
-
* DELETE /workflow-schedule/:id
|
|
174
|
-
*/
|
|
175
|
-
@Delete('/:id')
|
|
176
|
-
@HttpCode(HttpStatus.OK)
|
|
177
|
-
async deleteSchedule(
|
|
178
|
-
@Param('id', ParseIntPipe) id: number,
|
|
179
|
-
@Req() req: Request & { user: any },
|
|
180
|
-
) {
|
|
181
|
-
const loggedInUser = req.user.userData;
|
|
182
|
-
await this.workflowScheduleService.deleteSchedule(id, loggedInUser);
|
|
183
|
-
|
|
184
|
-
return {
|
|
185
|
-
success: true,
|
|
186
|
-
message: 'Scheduled workflow deleted successfully',
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* 8. Manually trigger a scheduled workflow execution
|
|
192
|
-
* POST /workflow-schedule/:id/trigger
|
|
193
|
-
*/
|
|
194
|
-
@Post('/:id/trigger')
|
|
195
|
-
@HttpCode(HttpStatus.OK)
|
|
196
|
-
async triggerManualExecution(
|
|
197
|
-
@Param('id', ParseIntPipe) id: number,
|
|
198
|
-
@Body('metadata') metadata: Record<string, any>,
|
|
199
|
-
@Req() req: Request & { user: any },
|
|
200
|
-
) {
|
|
201
|
-
const loggedInUser = req.user.userData;
|
|
202
|
-
const result = await this.workflowScheduleService.triggerManualExecution(
|
|
203
|
-
id,
|
|
204
|
-
loggedInUser,
|
|
205
|
-
metadata,
|
|
206
|
-
);
|
|
207
|
-
|
|
208
|
-
return {
|
|
209
|
-
success: true,
|
|
210
|
-
message: 'Workflow execution triggered successfully',
|
|
211
|
-
data: result,
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* 9. Get execution logs with filters and pagination
|
|
217
|
-
* POST /workflow-schedule/execution-logs
|
|
218
|
-
*/
|
|
219
|
-
@Post('/execution-logs')
|
|
220
|
-
@HttpCode(HttpStatus.OK)
|
|
221
|
-
async getExecutionLogs(
|
|
222
|
-
@Body() getExecutionLogsDto: GetExecutionLogsDto,
|
|
223
|
-
@Req() req: Request & { user: any },
|
|
224
|
-
) {
|
|
225
|
-
const loggedInUser = req.user.userData;
|
|
226
|
-
const result = await this.workflowScheduleService.getExecutionLogs(
|
|
227
|
-
getExecutionLogsDto,
|
|
228
|
-
loggedInUser,
|
|
229
|
-
);
|
|
230
|
-
|
|
231
|
-
return {
|
|
232
|
-
success: true,
|
|
233
|
-
...result,
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* BONUS: Get execution statistics for a schedule
|
|
239
|
-
* GET /workflow-schedule/:id/stats
|
|
240
|
-
*/
|
|
241
|
-
@Get('/:id/stats')
|
|
242
|
-
@HttpCode(HttpStatus.OK)
|
|
243
|
-
async getExecutionStats(
|
|
244
|
-
@Param('id', ParseIntPipe) id: number,
|
|
245
|
-
@Req() req: Request & { user: any },
|
|
246
|
-
) {
|
|
247
|
-
const loggedInUser = req.user.userData;
|
|
248
|
-
const stats = await this.workflowScheduleService.getExecutionStats(id, loggedInUser);
|
|
249
|
-
|
|
250
|
-
return {
|
|
251
|
-
success: true,
|
|
252
|
-
data: stats,
|
|
253
|
-
};
|
|
254
|
-
}
|
|
255
|
-
}
|