@platform-modules/foreign-ministry 1.3.290 → 1.3.297

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 (84) hide show
  1. package/dist/data-source.js +50 -0
  2. package/dist/index.d.ts +28 -0
  3. package/dist/index.js +77 -1
  4. package/dist/models/EmployeeOfMonthNominationApprovalModel.d.ts +22 -0
  5. package/dist/models/EmployeeOfMonthNominationApprovalModel.js +85 -0
  6. package/dist/models/EmployeeOfMonthNominationAttachmentModel.d.ts +10 -0
  7. package/dist/models/EmployeeOfMonthNominationAttachmentModel.js +48 -0
  8. package/dist/models/EmployeeOfMonthNominationChatModel.d.ts +18 -0
  9. package/dist/models/EmployeeOfMonthNominationChatModel.js +66 -0
  10. package/dist/models/EmployeeOfMonthNominationRequestModel.d.ts +32 -0
  11. package/dist/models/EmployeeOfMonthNominationRequestModel.js +77 -0
  12. package/dist/models/EmployeeOfMonthNominationWorkflowModel.d.ts +19 -0
  13. package/dist/models/EmployeeOfMonthNominationWorkflowModel.js +73 -0
  14. package/dist/models/EmployeeOfMonthSupportNominationApprovalModel.d.ts +22 -0
  15. package/dist/models/EmployeeOfMonthSupportNominationApprovalModel.js +85 -0
  16. package/dist/models/EmployeeOfMonthSupportNominationAttachmentModel.d.ts +10 -0
  17. package/dist/models/EmployeeOfMonthSupportNominationAttachmentModel.js +48 -0
  18. package/dist/models/EmployeeOfMonthSupportNominationChatModel.d.ts +18 -0
  19. package/dist/models/EmployeeOfMonthSupportNominationChatModel.js +66 -0
  20. package/dist/models/EmployeeOfMonthSupportNominationRequestModel.d.ts +27 -0
  21. package/dist/models/EmployeeOfMonthSupportNominationRequestModel.js +77 -0
  22. package/dist/models/EmployeeOfMonthSupportNominationWorkflowModel.d.ts +19 -0
  23. package/dist/models/EmployeeOfMonthSupportNominationWorkflowModel.js +73 -0
  24. package/dist/models/InitiatorEmployeeNominationApprovalModel.d.ts +22 -0
  25. package/dist/models/InitiatorEmployeeNominationApprovalModel.js +84 -0
  26. package/dist/models/InitiatorEmployeeNominationAttachmentModel.d.ts +11 -0
  27. package/dist/models/InitiatorEmployeeNominationAttachmentModel.js +52 -0
  28. package/dist/models/InitiatorEmployeeNominationChatModel.d.ts +18 -0
  29. package/dist/models/InitiatorEmployeeNominationChatModel.js +65 -0
  30. package/dist/models/InitiatorEmployeeNominationRequestModel.d.ts +51 -0
  31. package/dist/models/InitiatorEmployeeNominationRequestModel.js +95 -0
  32. package/dist/models/InitiatorEmployeeNominationWorkflowModel.d.ts +19 -0
  33. package/dist/models/InitiatorEmployeeNominationWorkflowModel.js +72 -0
  34. package/dist/models/InnovativeEmployeeNominationApprovalModel.d.ts +22 -0
  35. package/dist/models/InnovativeEmployeeNominationApprovalModel.js +84 -0
  36. package/dist/models/InnovativeEmployeeNominationAttachmentModel.d.ts +11 -0
  37. package/dist/models/InnovativeEmployeeNominationAttachmentModel.js +52 -0
  38. package/dist/models/InnovativeEmployeeNominationChatModel.d.ts +18 -0
  39. package/dist/models/InnovativeEmployeeNominationChatModel.js +65 -0
  40. package/dist/models/InnovativeEmployeeNominationRequestModel.d.ts +23 -0
  41. package/dist/models/InnovativeEmployeeNominationRequestModel.js +88 -0
  42. package/dist/models/InnovativeEmployeeNominationWorkflowModel.d.ts +19 -0
  43. package/dist/models/InnovativeEmployeeNominationWorkflowModel.js +72 -0
  44. package/dist/models/IpeGrievanceApprovalModel.d.ts +22 -0
  45. package/dist/models/IpeGrievanceApprovalModel.js +84 -0
  46. package/dist/models/IpeGrievanceAttachmentModel.d.ts +11 -0
  47. package/dist/models/IpeGrievanceAttachmentModel.js +52 -0
  48. package/dist/models/IpeGrievanceChatModel.d.ts +18 -0
  49. package/dist/models/IpeGrievanceChatModel.js +65 -0
  50. package/dist/models/IpeGrievanceRequestModel.d.ts +57 -0
  51. package/dist/models/IpeGrievanceRequestModel.js +178 -0
  52. package/dist/models/IpeGrievanceWorkflowModel.d.ts +19 -0
  53. package/dist/models/IpeGrievanceWorkflowModel.js +72 -0
  54. package/package.json +1 -1
  55. package/src/data-source.ts +50 -0
  56. package/src/index.ts +93 -0
  57. package/src/models/EmployeeOfMonthNominationApprovalModel.ts +57 -0
  58. package/src/models/EmployeeOfMonthNominationAttachmentModel.ts +26 -0
  59. package/src/models/EmployeeOfMonthNominationChatModel.ts +43 -0
  60. package/src/models/EmployeeOfMonthNominationRequestModel.ts +64 -0
  61. package/src/models/EmployeeOfMonthNominationWorkflowModel.ts +48 -0
  62. package/src/models/EmployeeOfMonthSupportNominationApprovalModel.ts +57 -0
  63. package/src/models/EmployeeOfMonthSupportNominationAttachmentModel.ts +26 -0
  64. package/src/models/EmployeeOfMonthSupportNominationChatModel.ts +43 -0
  65. package/src/models/EmployeeOfMonthSupportNominationRequestModel.ts +59 -0
  66. package/src/models/EmployeeOfMonthSupportNominationWorkflowModel.ts +48 -0
  67. package/src/models/InitiatorEmployeeNominationApprovalModel.ts +56 -0
  68. package/src/models/InitiatorEmployeeNominationAttachmentModel.ts +29 -0
  69. package/src/models/InitiatorEmployeeNominationChatModel.ts +42 -0
  70. package/src/models/InitiatorEmployeeNominationRequestModel.ts +74 -0
  71. package/src/models/InitiatorEmployeeNominationWorkflowModel.ts +47 -0
  72. package/src/models/InnovativeEmployeeNominationApprovalModel.ts +56 -0
  73. package/src/models/InnovativeEmployeeNominationAttachmentModel.ts +29 -0
  74. package/src/models/InnovativeEmployeeNominationChatModel.ts +42 -0
  75. package/src/models/InnovativeEmployeeNominationRequestModel.ts +59 -0
  76. package/src/models/InnovativeEmployeeNominationWorkflowModel.ts +47 -0
  77. package/src/models/IpeGrievanceApprovalModel.ts +56 -0
  78. package/src/models/IpeGrievanceAttachmentModel.ts +29 -0
  79. package/src/models/IpeGrievanceChatModel.ts +42 -0
  80. package/src/models/IpeGrievanceRequestModel.ts +139 -0
  81. package/src/models/IpeGrievanceWorkflowModel.ts +47 -0
  82. package/scripts/migration-employee-evaluation-approval-role-null.sql +0 -11
  83. package/scripts/migration-employee-evaluation-request-v2.sql +0 -63
  84. package/scripts/migration-evaluation-max-employees-per-request.sql +0 -2
@@ -0,0 +1,59 @@
1
+ import { Column, Entity } from 'typeorm';
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum InnovativeEmployeeNominationRequestStatus {
5
+ PENDING = 'Pending',
6
+ IN_PROGRESS = 'In Progress',
7
+ APPROVED = 'Approved',
8
+ REJECTED = 'Rejected',
9
+ }
10
+
11
+ @Entity({ name: 'innovative_employee_nomination_requests' })
12
+ export class InnovativeEmployeeNominationRequests extends BaseModel {
13
+ @Column({ type: 'int', nullable: true })
14
+ req_user_department_id: number | null;
15
+
16
+ @Column({ type: 'int', nullable: true })
17
+ req_user_section_id: number | null;
18
+
19
+ @Column({ type: 'int', nullable: true })
20
+ service_id: number | null;
21
+
22
+ @Column({ type: 'int', nullable: true })
23
+ sub_service_id: number | null;
24
+
25
+ @Column({ type: 'int', nullable: false })
26
+ user_id: number;
27
+
28
+ @Column({ type: 'varchar', length: 120, nullable: false })
29
+ job_number: string;
30
+
31
+ @Column({ type: 'varchar', length: 255, nullable: false })
32
+ last_annual_assessment: string;
33
+
34
+ @Column({ type: 'varchar', length: 500, nullable: false })
35
+ idea_title: string;
36
+
37
+ @Column({ type: 'text', nullable: false })
38
+ idea_description: string;
39
+
40
+ @Column({ type: 'text', nullable: false })
41
+ contribution_description: string;
42
+
43
+ @Column({ type: 'boolean', nullable: false, default: false })
44
+ has_been_implemented: boolean;
45
+
46
+ @Column({
47
+ type: 'enum',
48
+ enum: InnovativeEmployeeNominationRequestStatus,
49
+ default: InnovativeEmployeeNominationRequestStatus.PENDING,
50
+ nullable: false,
51
+ })
52
+ status: InnovativeEmployeeNominationRequestStatus;
53
+
54
+ @Column({ type: 'varchar', length: 255, nullable: true })
55
+ workflow_execution_id: string | null;
56
+
57
+ @Column({ type: 'text', nullable: true })
58
+ comments: string | null;
59
+ }
@@ -0,0 +1,47 @@
1
+ import { Column, Entity } from 'typeorm';
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum InnovativeEmployeeNominationWorkFlowStatus {
5
+ PENDING = 'Pending',
6
+ IN_PROGRESS = 'In Progress',
7
+ COMPLETED = 'Completed',
8
+ SKIPPED = 'Skipped',
9
+ }
10
+
11
+ @Entity({ name: 'innovative_employee_nomination_workflows' })
12
+ export class InnovativeEmployeeNominationWorkFlow 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: true })
23
+ user_id: number | null;
24
+
25
+ @Column({ type: 'integer', nullable: true })
26
+ role_id: number | null;
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: 'varchar', length: 255, nullable: true })
35
+ task_name: string | null;
36
+
37
+ @Column({ type: 'text', nullable: true })
38
+ description: string | null;
39
+
40
+ @Column({
41
+ type: 'enum',
42
+ enum: InnovativeEmployeeNominationWorkFlowStatus,
43
+ default: InnovativeEmployeeNominationWorkFlowStatus.PENDING,
44
+ nullable: false,
45
+ })
46
+ status: InnovativeEmployeeNominationWorkFlowStatus;
47
+ }
@@ -0,0 +1,56 @@
1
+ import { Column, Entity } from 'typeorm';
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum IpeGrievanceApprovalStatus {
5
+ PENDING = 'Pending',
6
+ IN_PROGRESS = 'In Progress',
7
+ APPROVED = 'Approved',
8
+ REJECTED = 'Rejected',
9
+ }
10
+
11
+ @Entity({ name: 'ipe_grievance_approvals' })
12
+ export class IpeGrievanceApprovalDetails 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 | null;
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: IpeGrievanceApprovalStatus,
49
+ default: IpeGrievanceApprovalStatus.PENDING,
50
+ nullable: false,
51
+ })
52
+ approval_status: IpeGrievanceApprovalStatus;
53
+
54
+ @Column({ type: 'boolean', default: true, nullable: false })
55
+ is_allowed: boolean;
56
+ }
@@ -0,0 +1,29 @@
1
+ import { Column, Entity } from 'typeorm';
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ @Entity({ name: 'ipe_grievance_attachments' })
5
+ export class IpeGrievanceRequestAttachment extends BaseModel {
6
+ @Column({ type: 'integer', nullable: false })
7
+ request_id: number;
8
+
9
+ @Column({ type: 'integer', nullable: true })
10
+ service_id: number | null;
11
+
12
+ @Column({ type: 'integer', nullable: true })
13
+ sub_service_id: number | null;
14
+
15
+ @Column({ type: 'varchar', length: 500, nullable: false })
16
+ file_url: string;
17
+
18
+ @Column({ type: 'varchar', length: 255, nullable: true })
19
+ file_name: string | null;
20
+
21
+ @Column({ type: 'varchar', length: 100, nullable: true })
22
+ file_type: string | null;
23
+
24
+ @Column({ type: 'bigint', nullable: true })
25
+ file_size: number | null;
26
+
27
+ @Column({ type: 'integer', nullable: true })
28
+ chat_id: number | null;
29
+ }
@@ -0,0 +1,42 @@
1
+ import { Column, Entity } from 'typeorm';
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum IpeGrievanceMessageType {
5
+ TEXT = 'text',
6
+ IMAGE = 'image',
7
+ VIDEO = 'video',
8
+ FILE = 'file',
9
+ LINK = 'link',
10
+ }
11
+
12
+ @Entity({ name: 'ipe_grievance_chats' })
13
+ export class IpeGrievanceRequestChat extends BaseModel {
14
+ @Column({ type: 'integer', nullable: false })
15
+ request_id: number;
16
+
17
+ @Column({ type: 'integer', nullable: true })
18
+ service_id: number | null;
19
+
20
+ @Column({ type: 'integer', nullable: true })
21
+ sub_service_id: number | null;
22
+
23
+ @Column({ type: 'integer', nullable: false })
24
+ user_id: number;
25
+
26
+ @Column({ type: 'integer', nullable: true })
27
+ role_id: number | null;
28
+
29
+ @Column({ type: 'text', nullable: false })
30
+ message: string;
31
+
32
+ @Column({
33
+ type: 'enum',
34
+ enum: IpeGrievanceMessageType,
35
+ default: IpeGrievanceMessageType.TEXT,
36
+ nullable: false,
37
+ })
38
+ message_type: IpeGrievanceMessageType;
39
+
40
+ @Column({ type: 'text', nullable: true })
41
+ status: string | null;
42
+ }
@@ -0,0 +1,139 @@
1
+ import { Column, Entity } from 'typeorm';
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum IpeGrievanceRequestStatus {
5
+ PENDING = 'Pending',
6
+ IN_PROGRESS = 'In Progress',
7
+ APPROVED = 'Approved',
8
+ REJECTED = 'Rejected',
9
+ }
10
+
11
+ export enum IpeGrievanceFinalEvaluationResult {
12
+ VERY_GOOD = 'Very Good',
13
+ GOOD = 'Good',
14
+ MEDIUM = 'Medium',
15
+ WEAK = 'Weak',
16
+ }
17
+
18
+ export enum IpeGrievancePeriodType {
19
+ FIRST_PERIOD = 'First Period',
20
+ SECOND_PERIOD = 'Second Period',
21
+ ANNUAL_EVALUATION = 'Annual Evaluation',
22
+ NO_EXEMPTION_FOR_PERIOD = 'No Exemption for a Period',
23
+ }
24
+
25
+ export enum IpeGrievanceExemptionReason {
26
+ EXTRAORDINARY_LEAVE = 'Extraordinary Leave',
27
+ SECONDMENT = 'Secondment',
28
+ OTHER = 'Other',
29
+ }
30
+
31
+ export enum IpeGrievancePeriodRating {
32
+ BELOW_EXPECTATIONS = 'Below expectations',
33
+ MEETS_EXPECTATIONS = 'Meets expectations',
34
+ EXCEEDS_EXPECTATIONS = 'Exceeds expectations',
35
+ }
36
+
37
+ @Entity({ name: 'ipe_grievance_requests' })
38
+ export class IpeGrievanceRequests extends BaseModel {
39
+ @Column({ type: 'int', nullable: true })
40
+ req_user_department_id: number | null;
41
+
42
+ @Column({ type: 'int', nullable: true })
43
+ req_user_section_id: number | null;
44
+
45
+ @Column({ type: 'int', nullable: true })
46
+ service_id: number | null;
47
+
48
+ @Column({ type: 'int', nullable: true })
49
+ sub_service_id: number | null;
50
+
51
+ /** Employee who raised the grievance. */
52
+ @Column({ type: 'int', nullable: false })
53
+ user_id: number;
54
+
55
+ @Column({ type: 'varchar', length: 255, nullable: false })
56
+ employee_name: string;
57
+
58
+ @Column({ type: 'varchar', length: 64, nullable: false })
59
+ civil_id: string;
60
+
61
+ @Column({ type: 'varchar', length: 120, nullable: true })
62
+ grade: string | null;
63
+
64
+ @Column({ type: 'varchar', length: 255, nullable: true })
65
+ job_title: string | null;
66
+
67
+ @Column({ type: 'varchar', length: 255, nullable: false })
68
+ department_office: string;
69
+
70
+ @Column({ type: 'date', nullable: true })
71
+ date_of_appointment: string | null;
72
+
73
+ @Column({ type: 'varchar', length: 255, nullable: true })
74
+ current_administrator: string | null;
75
+
76
+ @Column({
77
+ type: 'enum',
78
+ enum: IpeGrievanceFinalEvaluationResult,
79
+ nullable: false,
80
+ })
81
+ final_evaluation_result: IpeGrievanceFinalEvaluationResult;
82
+
83
+ @Column({
84
+ type: 'enum',
85
+ enum: IpeGrievancePeriodType,
86
+ nullable: false,
87
+ })
88
+ grievance_period_type: IpeGrievancePeriodType;
89
+
90
+ @Column({
91
+ type: 'enum',
92
+ enum: IpeGrievanceExemptionReason,
93
+ nullable: true,
94
+ })
95
+ exemption_reason: IpeGrievanceExemptionReason | null;
96
+
97
+ @Column({ type: 'varchar', length: 255, nullable: true })
98
+ direct_officer_first_period: string | null;
99
+
100
+ @Column({ type: 'int', nullable: true })
101
+ shaded_points_first_period: number | null;
102
+
103
+ @Column({
104
+ type: 'enum',
105
+ enum: IpeGrievancePeriodRating,
106
+ nullable: true,
107
+ })
108
+ evaluation_first_period: IpeGrievancePeriodRating | null;
109
+
110
+ @Column({ type: 'varchar', length: 255, nullable: true })
111
+ direct_officer_second_period: string | null;
112
+
113
+ @Column({ type: 'int', nullable: true })
114
+ shaded_points_second_period: number | null;
115
+
116
+ @Column({
117
+ type: 'enum',
118
+ enum: IpeGrievancePeriodRating,
119
+ nullable: true,
120
+ })
121
+ evaluation_second_period: IpeGrievancePeriodRating | null;
122
+
123
+ @Column({ type: 'text', nullable: true })
124
+ other_grievance_grounds: string | null;
125
+
126
+ @Column({
127
+ type: 'enum',
128
+ enum: IpeGrievanceRequestStatus,
129
+ default: IpeGrievanceRequestStatus.PENDING,
130
+ nullable: false,
131
+ })
132
+ status: IpeGrievanceRequestStatus;
133
+
134
+ @Column({ type: 'varchar', length: 255, nullable: true })
135
+ workflow_execution_id: string | null;
136
+
137
+ @Column({ type: 'text', nullable: true })
138
+ comments: string | null;
139
+ }
@@ -0,0 +1,47 @@
1
+ import { Column, Entity } from 'typeorm';
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum IpeGrievanceWorkFlowStatus {
5
+ PENDING = 'Pending',
6
+ IN_PROGRESS = 'In Progress',
7
+ COMPLETED = 'Completed',
8
+ SKIPPED = 'Skipped',
9
+ }
10
+
11
+ @Entity({ name: 'ipe_grievance_workflows' })
12
+ export class IpeGrievanceWorkFlow 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: true })
23
+ user_id: number | null;
24
+
25
+ @Column({ type: 'integer', nullable: true })
26
+ role_id: number | null;
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: 'varchar', length: 255, nullable: true })
35
+ task_name: string | null;
36
+
37
+ @Column({ type: 'text', nullable: true })
38
+ description: string | null;
39
+
40
+ @Column({
41
+ type: 'enum',
42
+ enum: IpeGrievanceWorkFlowStatus,
43
+ default: IpeGrievanceWorkFlowStatus.PENDING,
44
+ nullable: false,
45
+ })
46
+ status: IpeGrievanceWorkFlowStatus;
47
+ }
@@ -1,11 +0,0 @@
1
- -- Treat missing approver role as NULL (not 0)
2
- ALTER TABLE employee_evaluation_approvals
3
- ALTER COLUMN approver_role_id DROP NOT NULL;
4
-
5
- UPDATE employee_evaluation_approvals
6
- SET approver_role_id = NULL
7
- WHERE approver_role_id = 0;
8
-
9
- UPDATE employee_evaluation_workflows
10
- SET role_id = NULL
11
- WHERE role_id = 0;
@@ -1,63 +0,0 @@
1
- -- Employee evaluation request v2: request aggregates, person scores, answers by request/user/form
2
-
3
- -- Request: evaluation_year as string + aggregates + form snapshot on request
4
- ALTER TABLE employee_evaluation_requests
5
- ALTER COLUMN evaluation_year TYPE varchar(10) USING evaluation_year::text;
6
-
7
- ALTER TABLE employee_evaluation_requests
8
- ADD COLUMN IF NOT EXISTS total_score double precision,
9
- ADD COLUMN IF NOT EXISTS average_score double precision,
10
- ADD COLUMN IF NOT EXISTS employee_count integer NOT NULL DEFAULT 0,
11
- ADD COLUMN IF NOT EXISTS dynamic_evaluation_form jsonb;
12
-
13
- -- Person scores (per employee in a request)
14
- CREATE TABLE IF NOT EXISTS employee_evaluation_person_scores (
15
- id serial PRIMARY KEY,
16
- request_id integer NOT NULL REFERENCES employee_evaluation_requests(id) ON DELETE CASCADE,
17
- user_id integer NOT NULL,
18
- us_feedback varchar(32),
19
- is_rca boolean NOT NULL DEFAULT false,
20
- total_score double precision,
21
- created_by varchar(255),
22
- updated_by varchar(255),
23
- created_at timestamptz DEFAULT now(),
24
- updated_at timestamptz DEFAULT now(),
25
- is_deleted boolean NOT NULL DEFAULT false,
26
- UNIQUE (request_id, user_id)
27
- );
28
-
29
- -- Answers: migrate from employee_evaluation_id to request_id / user_id / form_id
30
- ALTER TABLE employee_evaluation_answers
31
- ADD COLUMN IF NOT EXISTS request_id integer,
32
- ADD COLUMN IF NOT EXISTS user_id integer,
33
- ADD COLUMN IF NOT EXISTS form_id integer,
34
- ADD COLUMN IF NOT EXISTS section_id integer,
35
- ADD COLUMN IF NOT EXISTS question_id integer;
36
-
37
- UPDATE employee_evaluation_answers a
38
- SET
39
- request_id = ev.evaluation_request_id,
40
- user_id = ev.user_id,
41
- section_id = a.evaluation_section_id,
42
- question_id = a.evaluation_question_id,
43
- form_id = fs.form_id
44
- FROM employee_evaluations ev
45
- LEFT JOIN evaluation_form_sections fs ON fs.id = a.evaluation_section_id
46
- WHERE a.employee_evaluation_id = ev.id
47
- AND a.request_id IS NULL;
48
-
49
- -- Backfill form_id from questions if section join missed
50
- UPDATE employee_evaluation_answers a
51
- SET form_id = fq.form_section_id
52
- FROM evaluation_form_questions fq
53
- WHERE a.form_id IS NULL AND a.question_id = fq.id;
54
-
55
- UPDATE employee_evaluation_answers a
56
- SET form_id = fs.form_id
57
- FROM evaluation_form_sections fs
58
- WHERE a.form_id IS NULL AND a.section_id = fs.id;
59
-
60
- -- Drop legacy FK columns when safe (optional — run after app deploy)
61
- -- ALTER TABLE employee_evaluation_answers DROP COLUMN IF EXISTS employee_evaluation_id;
62
- -- ALTER TABLE employee_evaluation_answers DROP COLUMN IF EXISTS evaluation_section_id;
63
- -- ALTER TABLE employee_evaluation_answers DROP COLUMN IF EXISTS evaluation_question_id;
@@ -1,2 +0,0 @@
1
- ALTER TABLE evaluation_eligibility_settings
2
- ADD COLUMN IF NOT EXISTS max_employees_per_request integer NOT NULL DEFAULT 50;