@platform-modules/civil-aviation-authority 2.3.240 → 2.3.242

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.
Files changed (92) hide show
  1. package/.env +7 -22
  2. package/dist/models/CyberSecurityAuditRequestModel.d.ts +1 -1
  3. package/dist/models/CyberSecurityAuditRequestModel.js +2 -2
  4. package/dist/models/ITApprovalSettings.d.ts +7 -0
  5. package/dist/models/ITApprovalSettings.js +40 -0
  6. package/dist/models/ITServicesTypesMuscatModel.d.ts +6 -0
  7. package/dist/models/ITServicesTypesMuscatModel.js +34 -0
  8. package/dist/models/ITServicesTypesSalalahModel.d.ts +6 -0
  9. package/dist/models/ITServicesTypesSalalahModel.js +34 -0
  10. package/dist/models/Workflows.d.ts +9 -0
  11. package/dist/models/Workflows.js +31 -0
  12. package/package.json +1 -1
  13. package/src/data-source.ts +495 -495
  14. package/src/index.ts +2 -4
  15. package/src/models/AccessCardRequestModel.ts +135 -135
  16. package/src/models/AccommodationApprovalModel.ts +8 -8
  17. package/src/models/AccommodationRequestModel.ts +8 -8
  18. package/src/models/AirportEntryPermitModel.ts +276 -276
  19. package/src/models/AnnualIncrementRequestEmployeeModel.ts +65 -65
  20. package/src/models/AnnualIncrementRequestModel.ts +25 -25
  21. package/src/models/AnnualTrainingPlanRequestModel.ts +153 -153
  22. package/src/models/AppealAgainstAdministrativeDecisionRequestModel.ts +23 -23
  23. package/src/models/CAAServices.ts +33 -33
  24. package/src/models/CAASubServices.ts +33 -33
  25. package/src/models/CAIRatingMasterModel.ts +39 -39
  26. package/src/models/CSRMBusinessImpactRatingMasterModel.ts +25 -25
  27. package/src/models/CSRMLikelihoodMasterModel.ts +25 -25
  28. package/src/models/CashAllowanceLeaveRequestModel.ts +11 -11
  29. package/src/models/CyberSecurityAuditRequestModel.ts +2 -2
  30. package/src/models/DepartmentsModel.ts +25 -25
  31. package/src/models/DocumentDriveModel.ts +28 -28
  32. package/src/models/DocumentFolderModel.ts +45 -45
  33. package/src/models/HousingContractCancelApprovalModel.ts +64 -64
  34. package/src/models/HousingContractCancelChatModel.ts +56 -56
  35. package/src/models/HousingContractRenewalApprovalModel.ts +64 -64
  36. package/src/models/HousingContractRenewalChatModel.ts +59 -59
  37. package/src/models/HrServiceRequestModel.ts +193 -193
  38. package/src/models/ITRequestAttachmentModel.ts +73 -73
  39. package/src/models/ITRequestChatModel.ts +74 -74
  40. package/src/models/ItApprovalsModel.ts +84 -84
  41. package/src/models/ItWorkflowModel.ts +55 -55
  42. package/src/models/LegalConsultationApprovalModel.ts +65 -65
  43. package/src/models/MissionTravelPassportExpiryNotificationConfigModel.ts +36 -36
  44. package/src/models/NotificationModel.ts +89 -89
  45. package/src/models/PerformanceCyclePeriodModel.ts +26 -26
  46. package/src/models/PerformanceGoalMasterModel.ts +27 -27
  47. package/src/models/PerformanceManagementRequestGoalModel.ts +46 -46
  48. package/src/models/PerformanceManagementRequestModel.ts +14 -14
  49. package/src/models/PromotionRequestModel.ts +11 -11
  50. package/src/models/ResidentialUnitRentalApprovalModel.ts +143 -143
  51. package/src/models/ResidentialUnitRentalChatModel.ts +56 -56
  52. package/src/models/ResidentialUnitRentalRequestModel.ts +218 -218
  53. package/src/models/RespondToEnquiriesRequestModel.ts +31 -31
  54. package/src/models/ServiceExtensionAfter60ApprovalModel.ts +87 -87
  55. package/src/models/ServiceSlaApprovalModel.ts +52 -52
  56. package/src/models/ServicesNotificationConfigModel.ts +55 -55
  57. package/src/models/SkillsEnhancementRequestModel.ts +17 -17
  58. package/src/models/SlaRequestModel.ts +65 -65
  59. package/src/models/StudyLeaveRequestModel.ts +144 -144
  60. package/src/models/TrainingRequestModel.ts +164 -164
  61. package/src/models/TrainingRoomBookingRequestModel.ts +142 -142
  62. package/src/models/TrainingRoomNotificationConfigModel.ts +30 -30
  63. package/src/models/UserSkillModel.ts +56 -56
  64. package/src/models/role.ts +34 -34
  65. package/src/models/user.ts +233 -233
  66. package/src/sla/sla-table-sync.service.ts +87 -87
  67. package/dist/models/DocumentMetadataModel.d.ts +0 -45
  68. package/dist/models/DocumentMetadataModel.js +0 -171
  69. package/dist/models/DocumentationDepartmentsModel.d.ts +0 -13
  70. package/dist/models/DocumentationDepartmentsModel.js +0 -53
  71. package/dist/models/FolderModel.d.ts +0 -16
  72. package/dist/models/FolderModel.js +0 -85
  73. package/dist/models/ImportExportMaterialModels.d.ts +0 -92
  74. package/dist/models/ImportExportMaterialModels.js +0 -307
  75. package/dist/models/PermissionModel.d.ts +0 -18
  76. package/dist/models/PermissionModel.js +0 -68
  77. package/dist/models/SecurityAccessApprovalModel.d.ts +0 -23
  78. package/dist/models/SecurityAccessApprovalModel.js +0 -82
  79. package/dist/models/SecurityAccessAttachmentModel.d.ts +0 -12
  80. package/dist/models/SecurityAccessAttachmentModel.js +0 -56
  81. package/dist/models/SecurityAccessChatModel.d.ts +0 -12
  82. package/dist/models/SecurityAccessChatModel.js +0 -56
  83. package/dist/models/SecurityAccessRequestModel.d.ts +0 -25
  84. package/dist/models/SecurityAccessRequestModel.js +0 -80
  85. package/dist/models/SecurityAccessWorkflowModel.d.ts +0 -24
  86. package/dist/models/SecurityAccessWorkflowModel.js +0 -84
  87. package/dist/models/ServiceExtensionAfterAge60Models.d.ts +0 -93
  88. package/dist/models/ServiceExtensionAfterAge60Models.js +0 -312
  89. package/dist/models/UUIDBaseModel.d.ts +0 -14
  90. package/dist/models/UUIDBaseModel.js +0 -66
  91. package/dist/models/WorkingHoursExtensionModels.d.ts +0 -88
  92. package/dist/models/WorkingHoursExtensionModels.js +0 -295
@@ -1,87 +1,87 @@
1
- import { Column, Entity } from "typeorm";
2
- import { BaseModel } from "./BaseModel";
3
-
4
- export enum ServiceExtensionAfter60ApprovalStatus {
5
- PENDING = "Pending",
6
- IN_PROGRESS = "In Progress",
7
- APPROVED = "Approved",
8
- REJECTED = "Rejected"
9
- }
10
-
11
- @Entity({ name: "service_extension_after_60_approvals" })
12
- export class ServiceExtensionAfter60Approval extends BaseModel {
13
- @Column({ type: "integer", nullable: false })
14
- request_id: number;
15
-
16
- @Column({ type: "integer", nullable: true })
17
- service_id: number | null;
18
-
19
- @Column({ type: "integer", nullable: true })
20
- sub_service_id: number | null;
21
-
22
- @Column({ type: "integer", nullable: false })
23
- level: number;
24
-
25
- @Column({ type: "integer", nullable: true })
26
- approver_role_id: number;
27
-
28
- @Column({ type: "integer", nullable: true })
29
- department_id: number | null;
30
-
31
- @Column({ type: "integer", nullable: true })
32
- section_id: number | null;
33
-
34
- @Column({ type: "integer", nullable: true })
35
- approver_user_id: number | null;
36
-
37
- @Column({ type: "integer", nullable: true })
38
- delegate_user_id: number | null;
39
-
40
- @Column({ type: "integer", nullable: true })
41
- approved_by: number | null;
42
-
43
- @Column({ type: "varchar", length: 500, nullable: true, default: "" })
44
- comment: string;
45
-
46
- @Column({
47
- type: "enum",
48
- enum: ServiceExtensionAfter60ApprovalStatus,
49
- default: ServiceExtensionAfter60ApprovalStatus.PENDING,
50
- nullable: false
51
- })
52
- approval_status: ServiceExtensionAfter60ApprovalStatus;
53
-
54
- @Column({ type: "boolean", default: true, nullable: false })
55
- is_allowed: boolean;
56
-
57
- constructor(
58
- request_id: number,
59
- approver_role_id: number,
60
- level: number,
61
- comment: string,
62
- approval_status: ServiceExtensionAfter60ApprovalStatus,
63
- service_id?: number,
64
- sub_service_id?: number,
65
- department_id?: number | null,
66
- section_id?: number | null,
67
- approver_user_id?: number | null,
68
- delegate_user_id?: number | null,
69
- approved_by?: number | null,
70
- is_allowed?: boolean
71
- ) {
72
- super();
73
- this.request_id = request_id;
74
- this.service_id = service_id ?? null;
75
- this.sub_service_id = sub_service_id ?? null;
76
- this.level = level;
77
- this.approver_role_id = approver_role_id;
78
- this.department_id = department_id ?? null;
79
- this.section_id = section_id ?? null;
80
- this.approver_user_id = approver_user_id ?? null;
81
- this.delegate_user_id = delegate_user_id ?? null;
82
- this.approved_by = approved_by ?? null;
83
- this.comment = comment;
84
- this.approval_status = approval_status;
85
- this.is_allowed = is_allowed !== undefined ? is_allowed : true;
86
- }
87
- }
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from "./BaseModel";
3
+
4
+ export enum ServiceExtensionAfter60ApprovalStatus {
5
+ PENDING = "Pending",
6
+ IN_PROGRESS = "In Progress",
7
+ APPROVED = "Approved",
8
+ REJECTED = "Rejected"
9
+ }
10
+
11
+ @Entity({ name: "service_extension_after_60_approvals" })
12
+ export class ServiceExtensionAfter60Approval extends BaseModel {
13
+ @Column({ type: "integer", nullable: false })
14
+ request_id: number;
15
+
16
+ @Column({ type: "integer", nullable: true })
17
+ service_id: number | null;
18
+
19
+ @Column({ type: "integer", nullable: true })
20
+ sub_service_id: number | null;
21
+
22
+ @Column({ type: "integer", nullable: false })
23
+ level: number;
24
+
25
+ @Column({ type: "integer", nullable: true })
26
+ approver_role_id: number;
27
+
28
+ @Column({ type: "integer", nullable: true })
29
+ department_id: number | null;
30
+
31
+ @Column({ type: "integer", nullable: true })
32
+ section_id: number | null;
33
+
34
+ @Column({ type: "integer", nullable: true })
35
+ approver_user_id: number | null;
36
+
37
+ @Column({ type: "integer", nullable: true })
38
+ delegate_user_id: number | null;
39
+
40
+ @Column({ type: "integer", nullable: true })
41
+ approved_by: number | null;
42
+
43
+ @Column({ type: "varchar", length: 500, nullable: true, default: "" })
44
+ comment: string;
45
+
46
+ @Column({
47
+ type: "enum",
48
+ enum: ServiceExtensionAfter60ApprovalStatus,
49
+ default: ServiceExtensionAfter60ApprovalStatus.PENDING,
50
+ nullable: false
51
+ })
52
+ approval_status: ServiceExtensionAfter60ApprovalStatus;
53
+
54
+ @Column({ type: "boolean", default: true, nullable: false })
55
+ is_allowed: boolean;
56
+
57
+ constructor(
58
+ request_id: number,
59
+ approver_role_id: number,
60
+ level: number,
61
+ comment: string,
62
+ approval_status: ServiceExtensionAfter60ApprovalStatus,
63
+ service_id?: number,
64
+ sub_service_id?: number,
65
+ department_id?: number | null,
66
+ section_id?: number | null,
67
+ approver_user_id?: number | null,
68
+ delegate_user_id?: number | null,
69
+ approved_by?: number | null,
70
+ is_allowed?: boolean
71
+ ) {
72
+ super();
73
+ this.request_id = request_id;
74
+ this.service_id = service_id ?? null;
75
+ this.sub_service_id = sub_service_id ?? null;
76
+ this.level = level;
77
+ this.approver_role_id = approver_role_id;
78
+ this.department_id = department_id ?? null;
79
+ this.section_id = section_id ?? null;
80
+ this.approver_user_id = approver_user_id ?? null;
81
+ this.delegate_user_id = delegate_user_id ?? null;
82
+ this.approved_by = approved_by ?? null;
83
+ this.comment = comment;
84
+ this.approval_status = approval_status;
85
+ this.is_allowed = is_allowed !== undefined ? is_allowed : true;
86
+ }
87
+ }
@@ -1,52 +1,52 @@
1
- import { Column, Entity, Index } from "typeorm";
2
- import { BaseModel } from "./BaseModel";
3
-
4
- /**
5
- * Cross-service SLA tracking row for any microservice (HR, IT, Tender, …).
6
- * Segregated by service_id, sub_service_id, request_id.
7
- * source_approval_id = native approval row PK in the owning service (e.g. hr_service_approvals.id, vpn_approvals.id); not a DB FK.
8
- */
9
- @Entity({ name: "sla_approval" })
10
- @Index("idx_sla_approval_request_id", ["request_id"])
11
- @Index("idx_sla_approval_source_approval_id", ["source_approval_id"])
12
- @Index("idx_sla_approval_service_subservice", ["service_id", "sub_service_id"])
13
- @Index("idx_sla_approval_approval_status", ["approval_status"])
14
- @Index("idx_sla_approval_level", ["level"])
15
- @Index("idx_sla_approval_approver_user_id", ["approver_user_id"])
16
- @Index("idx_sla_approval_request_level", ["request_id", "level"])
17
- @Index("idx_sla_approval_svc_sub_status", ["service_id", "sub_service_id", "approval_status"])
18
- export class ServiceSlaApproval extends BaseModel {
19
- @Column({ type: "int" })
20
- request_id: number;
21
-
22
- @Column({ type: "int" })
23
- source_approval_id: number;
24
-
25
- @Column({ type: "int", nullable: true })
26
- service_id: number | null;
27
-
28
- @Column({ type: "int", nullable: true })
29
- sub_service_id: number | null;
30
-
31
- @Column({ type: "varchar", length: 64 })
32
- approval_status: string;
33
-
34
- @Column({ type: "int" })
35
- level: number;
36
-
37
- @Column({ type: "int", nullable: true })
38
- approver_user_id: number | null;
39
-
40
- @Column({ type: "int", nullable: true })
41
- approver_role_id: number | null;
42
-
43
- @Column({ type: "int", nullable: true })
44
- department_id: number | null;
45
-
46
- @Column({ type: "int", nullable: true })
47
- section_id: number | null;
48
-
49
- constructor() {
50
- super();
51
- }
52
- }
1
+ import { Column, Entity, Index } from "typeorm";
2
+ import { BaseModel } from "./BaseModel";
3
+
4
+ /**
5
+ * Cross-service SLA tracking row for any microservice (HR, IT, Tender, …).
6
+ * Segregated by service_id, sub_service_id, request_id.
7
+ * source_approval_id = native approval row PK in the owning service (e.g. hr_service_approvals.id, vpn_approvals.id); not a DB FK.
8
+ */
9
+ @Entity({ name: "sla_approval" })
10
+ @Index("idx_sla_approval_request_id", ["request_id"])
11
+ @Index("idx_sla_approval_source_approval_id", ["source_approval_id"])
12
+ @Index("idx_sla_approval_service_subservice", ["service_id", "sub_service_id"])
13
+ @Index("idx_sla_approval_approval_status", ["approval_status"])
14
+ @Index("idx_sla_approval_level", ["level"])
15
+ @Index("idx_sla_approval_approver_user_id", ["approver_user_id"])
16
+ @Index("idx_sla_approval_request_level", ["request_id", "level"])
17
+ @Index("idx_sla_approval_svc_sub_status", ["service_id", "sub_service_id", "approval_status"])
18
+ export class ServiceSlaApproval extends BaseModel {
19
+ @Column({ type: "int" })
20
+ request_id: number;
21
+
22
+ @Column({ type: "int" })
23
+ source_approval_id: number;
24
+
25
+ @Column({ type: "int", nullable: true })
26
+ service_id: number | null;
27
+
28
+ @Column({ type: "int", nullable: true })
29
+ sub_service_id: number | null;
30
+
31
+ @Column({ type: "varchar", length: 64 })
32
+ approval_status: string;
33
+
34
+ @Column({ type: "int" })
35
+ level: number;
36
+
37
+ @Column({ type: "int", nullable: true })
38
+ approver_user_id: number | null;
39
+
40
+ @Column({ type: "int", nullable: true })
41
+ approver_role_id: number | null;
42
+
43
+ @Column({ type: "int", nullable: true })
44
+ department_id: number | null;
45
+
46
+ @Column({ type: "int", nullable: true })
47
+ section_id: number | null;
48
+
49
+ constructor() {
50
+ super();
51
+ }
52
+ }
@@ -1,55 +1,55 @@
1
- import { Column, Entity } from "typeorm";
2
- import { BaseModel } from "./BaseModel";
3
-
4
- export enum ServicesNotificationTriggerType {
5
- FINAL_APPROVAL = "final_approval",
6
- EVERY_APPROVAL = "every_approval"
7
- }
8
-
9
- @Entity({ name: "services_notification_configs" })
10
- export class ServicesNotificationConfigs extends BaseModel {
11
- @Column({ type: "integer", nullable: false })
12
- service_id: number;
13
-
14
- @Column({ type: "integer", nullable: false })
15
- sub_service_id: number;
16
-
17
- @Column({ type: "integer", nullable: false })
18
- department_id: number;
19
-
20
- @Column({ type: "integer", nullable: true })
21
- section_id: number | null;
22
-
23
- @Column({ type: "integer", nullable: true })
24
- role_id: number | null;
25
-
26
- @Column({
27
- type: "enum",
28
- enum: ServicesNotificationTriggerType,
29
- nullable: false,
30
- default: ServicesNotificationTriggerType.FINAL_APPROVAL
31
- })
32
- trigger: ServicesNotificationTriggerType;
33
-
34
- @Column({ type: "boolean", nullable: false, default: true })
35
- is_active: boolean;
36
-
37
- constructor(
38
- service_id: number,
39
- sub_service_id: number,
40
- department_id: number,
41
- section_id: number | null = null,
42
- role_id: number | null = null,
43
- trigger: ServicesNotificationTriggerType = ServicesNotificationTriggerType.FINAL_APPROVAL,
44
- is_active: boolean = true
45
- ) {
46
- super();
47
- this.service_id = service_id;
48
- this.sub_service_id = sub_service_id;
49
- this.department_id = department_id;
50
- this.section_id = section_id;
51
- this.role_id = role_id;
52
- this.trigger = trigger;
53
- this.is_active = is_active;
54
- }
55
- }
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from "./BaseModel";
3
+
4
+ export enum ServicesNotificationTriggerType {
5
+ FINAL_APPROVAL = "final_approval",
6
+ EVERY_APPROVAL = "every_approval"
7
+ }
8
+
9
+ @Entity({ name: "services_notification_configs" })
10
+ export class ServicesNotificationConfigs extends BaseModel {
11
+ @Column({ type: "integer", nullable: false })
12
+ service_id: number;
13
+
14
+ @Column({ type: "integer", nullable: false })
15
+ sub_service_id: number;
16
+
17
+ @Column({ type: "integer", nullable: false })
18
+ department_id: number;
19
+
20
+ @Column({ type: "integer", nullable: true })
21
+ section_id: number | null;
22
+
23
+ @Column({ type: "integer", nullable: true })
24
+ role_id: number | null;
25
+
26
+ @Column({
27
+ type: "enum",
28
+ enum: ServicesNotificationTriggerType,
29
+ nullable: false,
30
+ default: ServicesNotificationTriggerType.FINAL_APPROVAL
31
+ })
32
+ trigger: ServicesNotificationTriggerType;
33
+
34
+ @Column({ type: "boolean", nullable: false, default: true })
35
+ is_active: boolean;
36
+
37
+ constructor(
38
+ service_id: number,
39
+ sub_service_id: number,
40
+ department_id: number,
41
+ section_id: number | null = null,
42
+ role_id: number | null = null,
43
+ trigger: ServicesNotificationTriggerType = ServicesNotificationTriggerType.FINAL_APPROVAL,
44
+ is_active: boolean = true
45
+ ) {
46
+ super();
47
+ this.service_id = service_id;
48
+ this.sub_service_id = sub_service_id;
49
+ this.department_id = department_id;
50
+ this.section_id = section_id;
51
+ this.role_id = role_id;
52
+ this.trigger = trigger;
53
+ this.is_active = is_active;
54
+ }
55
+ }
@@ -68,8 +68,8 @@ export class SkillsEnhancementRequest extends BaseModel {
68
68
  @Column({ type: "varchar", length: 255, nullable: false })
69
69
  issuing_authority: string;
70
70
 
71
- @Column({ type: "text", nullable: true })
72
- skill_summary: string | null;
71
+ @Column({ type: "text", nullable: true })
72
+ skill_summary: string | null;
73
73
 
74
74
  @Column({ type: "text", nullable: true })
75
75
  additional_info_requested: string | null;
@@ -86,13 +86,13 @@ export class SkillsEnhancementRequest extends BaseModel {
86
86
  reviewer_user_id?: number | null,
87
87
  assigned_to_user_id?: number | null,
88
88
  assigned_at?: Date | null,
89
- workflow_execution_id?: string | null,
90
- certification_title?: string,
91
- skill_category?: SkillCategory,
92
- issuing_authority?: string,
93
- skill_summary?: string | null,
94
- additional_info_requested?: string | null
95
- ) {
89
+ workflow_execution_id?: string | null,
90
+ certification_title?: string,
91
+ skill_category?: SkillCategory,
92
+ issuing_authority?: string,
93
+ skill_summary?: string | null,
94
+ additional_info_requested?: string | null
95
+ ) {
96
96
  super();
97
97
  this.user_id = user_id;
98
98
  this.status = status;
@@ -105,11 +105,11 @@ export class SkillsEnhancementRequest extends BaseModel {
105
105
  this.reviewer_user_id = reviewer_user_id || null;
106
106
  this.assigned_to_user_id = assigned_to_user_id || null;
107
107
  this.assigned_at = assigned_at || null;
108
- this.workflow_execution_id = workflow_execution_id || null;
109
- this.certification_title = certification_title || "";
110
- this.skill_category = skill_category || SkillCategory.TECHNICAL;
111
- this.issuing_authority = issuing_authority || "";
112
- this.skill_summary = skill_summary || null;
113
- this.additional_info_requested = additional_info_requested || null;
114
- }
115
- }
108
+ this.workflow_execution_id = workflow_execution_id || null;
109
+ this.certification_title = certification_title || "";
110
+ this.skill_category = skill_category || SkillCategory.TECHNICAL;
111
+ this.issuing_authority = issuing_authority || "";
112
+ this.skill_summary = skill_summary || null;
113
+ this.additional_info_requested = additional_info_requested || null;
114
+ }
115
+ }
@@ -1,65 +1,65 @@
1
- import { Column, Entity, Index } from "typeorm";
2
- import { BaseModel } from "./BaseModel";
3
-
4
- /** Workflow status for generic SLA-tracked service requests. */
5
- export enum SlaRequestStatus {
6
- PENDING = "Pending",
7
- IN_PROGRESS = "In Progress",
8
- APPROVED = "Approved",
9
- REJECTED = "Rejected"
10
- }
11
-
12
- /**
13
- * Cross-service SLA request: common routing/workflow fields plus `request_obj`
14
- * for service-specific payload (same common columns as `ServiceExtensionAfter60Request` lines 13–37).
15
- */
16
- @Entity({ name: "sla_requests" })
17
- /** Non-unique: same native `request_id` may be inserted more than once (e.g. workflow retries); scope in queries with service_id / workflow_execution_id as needed. */
18
- @Index("idx_sla_requests_request_id", ["request_id"])
19
- @Index("idx_sla_requests_user_id", ["user_id"])
20
- @Index("idx_sla_requests_service_subservice", ["service_id", "sub_service_id"])
21
- @Index("idx_sla_requests_workflow_execution_id", ["workflow_execution_id"])
22
- @Index("idx_sla_requests_status", ["status"])
23
- export class SlaRequest extends BaseModel {
24
- @Column({ type: "int", nullable: true })
25
- req_user_department_id: number | null;
26
-
27
- @Column({ type: "int", nullable: true })
28
- req_user_section_id: number | null;
29
-
30
- @Column({ type: "int", nullable: true })
31
- service_id: number | null;
32
-
33
- @Column({ type: "int", nullable: true })
34
- sub_service_id: number | null;
35
-
36
- @Column({ type: "int", nullable: false })
37
- user_id: number;
38
-
39
- @Column({
40
- type: "enum",
41
- enum: SlaRequestStatus,
42
- default: SlaRequestStatus.PENDING,
43
- nullable: false
44
- })
45
- status: SlaRequestStatus;
46
-
47
- @Column({ type: "varchar", length: 255, nullable: true })
48
- workflow_execution_id: string | null;
49
-
50
- /**
51
- * Native service request PK this SLA row tracks (non-unique index; scope with service_id/sub_service_id in queries).
52
- */
53
- @Column({ type: "int", nullable: false })
54
- request_id: number;
55
-
56
- /** Service-specific fields as JSON (shape defined per service / sub_service). */
57
- @Column({ type: "jsonb", nullable: false, default: () => "'{}'::jsonb" })
58
- request_obj: Record<string, unknown>;
59
-
60
- constructor() {
61
- super();
62
- this.request_id = 0;
63
- this.request_obj = {};
64
- }
65
- }
1
+ import { Column, Entity, Index } from "typeorm";
2
+ import { BaseModel } from "./BaseModel";
3
+
4
+ /** Workflow status for generic SLA-tracked service requests. */
5
+ export enum SlaRequestStatus {
6
+ PENDING = "Pending",
7
+ IN_PROGRESS = "In Progress",
8
+ APPROVED = "Approved",
9
+ REJECTED = "Rejected"
10
+ }
11
+
12
+ /**
13
+ * Cross-service SLA request: common routing/workflow fields plus `request_obj`
14
+ * for service-specific payload (same common columns as `ServiceExtensionAfter60Request` lines 13–37).
15
+ */
16
+ @Entity({ name: "sla_requests" })
17
+ /** Non-unique: same native `request_id` may be inserted more than once (e.g. workflow retries); scope in queries with service_id / workflow_execution_id as needed. */
18
+ @Index("idx_sla_requests_request_id", ["request_id"])
19
+ @Index("idx_sla_requests_user_id", ["user_id"])
20
+ @Index("idx_sla_requests_service_subservice", ["service_id", "sub_service_id"])
21
+ @Index("idx_sla_requests_workflow_execution_id", ["workflow_execution_id"])
22
+ @Index("idx_sla_requests_status", ["status"])
23
+ export class SlaRequest extends BaseModel {
24
+ @Column({ type: "int", nullable: true })
25
+ req_user_department_id: number | null;
26
+
27
+ @Column({ type: "int", nullable: true })
28
+ req_user_section_id: number | null;
29
+
30
+ @Column({ type: "int", nullable: true })
31
+ service_id: number | null;
32
+
33
+ @Column({ type: "int", nullable: true })
34
+ sub_service_id: number | null;
35
+
36
+ @Column({ type: "int", nullable: false })
37
+ user_id: number;
38
+
39
+ @Column({
40
+ type: "enum",
41
+ enum: SlaRequestStatus,
42
+ default: SlaRequestStatus.PENDING,
43
+ nullable: false
44
+ })
45
+ status: SlaRequestStatus;
46
+
47
+ @Column({ type: "varchar", length: 255, nullable: true })
48
+ workflow_execution_id: string | null;
49
+
50
+ /**
51
+ * Native service request PK this SLA row tracks (non-unique index; scope with service_id/sub_service_id in queries).
52
+ */
53
+ @Column({ type: "int", nullable: false })
54
+ request_id: number;
55
+
56
+ /** Service-specific fields as JSON (shape defined per service / sub_service). */
57
+ @Column({ type: "jsonb", nullable: false, default: () => "'{}'::jsonb" })
58
+ request_obj: Record<string, unknown>;
59
+
60
+ constructor() {
61
+ super();
62
+ this.request_id = 0;
63
+ this.request_obj = {};
64
+ }
65
+ }