@platform-modules/foreign-ministry 1.3.112 → 1.3.113

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/.env CHANGED
@@ -1,19 +1,5 @@
1
- # DB_HOST=localhost
2
- # DB_PORT=5433
3
- # DB_USER=postgres
4
- # DB_PASS=123
5
- # DB_NAME=FM
6
-
7
-
8
-
9
- DB_HOST=164.52.222.169
1
+ DB_HOST=localhost
10
2
  DB_PORT=5432
11
- DB_USER=postgres_admin_user
12
- DB_PASS=pg_admin_user_pwd_caa_fa_$%^&OIukhjgcvbn
3
+ DB_USER=postgres
4
+ DB_PASS=Fa@123
13
5
  DB_NAME=FM
14
-
15
- # DB_HOST=216.48.187.46
16
- # DB_PORT=5432
17
- # DB_USER=adminuser
18
- # DB_PASS=postgres_caa_fm_qa_34567
19
- # DB_NAME=FM_QA
@@ -166,7 +166,7 @@ exports.AppDataSource = new typeorm_1.DataSource({
166
166
  username: process.env.DB_USER || 'postgres',
167
167
  password: process.env.DB_PASS || 'postgres',
168
168
  database: process.env.DB_NAME || 'common_models',
169
- synchronize: true, // auto-create tables (disable in prod)
169
+ synchronize: false, // auto-create tables (disable in prod)
170
170
  logging: false,
171
171
  entities: [
172
172
  user_1.User,
package/dist/index.d.ts CHANGED
@@ -173,6 +173,7 @@ export * from './models/StayAfterHoursTransactionModel';
173
173
  export { StayAfterHoursTransaction, StayAfterHoursTransactionStatus } from './models/StayAfterHoursTransactionModel';
174
174
  export * from './models/TelephoneDirectoryModel';
175
175
  export * from './models/StationeryRequestsModel';
176
+ export * from './models/StationeryRequestMaterialsModel';
176
177
  export * from './models/StationeryMaterialMasterModel';
177
178
  export * from './models/ProfileUpdateRequestsModel';
178
179
  export * from './models/UserPersonalDetailsModel';
package/dist/index.js CHANGED
@@ -205,6 +205,7 @@ Object.defineProperty(exports, "StayAfterHoursTransaction", { enumerable: true,
205
205
  Object.defineProperty(exports, "StayAfterHoursTransactionStatus", { enumerable: true, get: function () { return StayAfterHoursTransactionModel_1.StayAfterHoursTransactionStatus; } });
206
206
  __exportStar(require("./models/TelephoneDirectoryModel"), exports);
207
207
  __exportStar(require("./models/StationeryRequestsModel"), exports);
208
+ __exportStar(require("./models/StationeryRequestMaterialsModel"), exports);
208
209
  __exportStar(require("./models/StationeryMaterialMasterModel"), exports);
209
210
  __exportStar(require("./models/ProfileUpdateRequestsModel"), exports);
210
211
  __exportStar(require("./models/UserPersonalDetailsModel"), exports);
@@ -0,0 +1,16 @@
1
+ import { BaseModel } from './BaseModel';
2
+ export declare class EmbassyMaster extends BaseModel {
3
+ embassy_name: string;
4
+ embassy_name_arabic: string | null;
5
+ country_id: number | null;
6
+ city: string | null;
7
+ address: string | null;
8
+ phone: string | null;
9
+ fax: string | null;
10
+ email: string | null;
11
+ website: string | null;
12
+ description: string | null;
13
+ is_active: boolean;
14
+ display_order: number;
15
+ constructor(embassy_name: string);
16
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.EmbassyMaster = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const BaseModel_1 = require("./BaseModel");
15
+ let EmbassyMaster = class EmbassyMaster extends BaseModel_1.BaseModel {
16
+ constructor(embassy_name) {
17
+ super();
18
+ this.embassy_name = embassy_name;
19
+ this.is_active = true;
20
+ this.display_order = 0;
21
+ }
22
+ };
23
+ exports.EmbassyMaster = EmbassyMaster;
24
+ __decorate([
25
+ (0, typeorm_1.Column)({ type: 'varchar', length: 255, nullable: false }),
26
+ __metadata("design:type", String)
27
+ ], EmbassyMaster.prototype, "embassy_name", void 0);
28
+ __decorate([
29
+ (0, typeorm_1.Column)({ type: 'varchar', length: 255, nullable: true }),
30
+ __metadata("design:type", Object)
31
+ ], EmbassyMaster.prototype, "embassy_name_arabic", void 0);
32
+ __decorate([
33
+ (0, typeorm_1.Column)({ type: 'int', nullable: true }),
34
+ __metadata("design:type", Object)
35
+ ], EmbassyMaster.prototype, "country_id", void 0);
36
+ __decorate([
37
+ (0, typeorm_1.Column)({ type: 'varchar', length: 255, nullable: true }),
38
+ __metadata("design:type", Object)
39
+ ], EmbassyMaster.prototype, "city", void 0);
40
+ __decorate([
41
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
42
+ __metadata("design:type", Object)
43
+ ], EmbassyMaster.prototype, "address", void 0);
44
+ __decorate([
45
+ (0, typeorm_1.Column)({ type: 'varchar', length: 50, nullable: true }),
46
+ __metadata("design:type", Object)
47
+ ], EmbassyMaster.prototype, "phone", void 0);
48
+ __decorate([
49
+ (0, typeorm_1.Column)({ type: 'varchar', length: 50, nullable: true }),
50
+ __metadata("design:type", Object)
51
+ ], EmbassyMaster.prototype, "fax", void 0);
52
+ __decorate([
53
+ (0, typeorm_1.Column)({ type: 'varchar', length: 255, nullable: true }),
54
+ __metadata("design:type", Object)
55
+ ], EmbassyMaster.prototype, "email", void 0);
56
+ __decorate([
57
+ (0, typeorm_1.Column)({ type: 'varchar', length: 500, nullable: true }),
58
+ __metadata("design:type", Object)
59
+ ], EmbassyMaster.prototype, "website", void 0);
60
+ __decorate([
61
+ (0, typeorm_1.Column)({ type: 'text', nullable: true }),
62
+ __metadata("design:type", Object)
63
+ ], EmbassyMaster.prototype, "description", void 0);
64
+ __decorate([
65
+ (0, typeorm_1.Column)({ type: 'boolean', default: true }),
66
+ __metadata("design:type", Boolean)
67
+ ], EmbassyMaster.prototype, "is_active", void 0);
68
+ __decorate([
69
+ (0, typeorm_1.Column)({ type: 'int', default: 0 }),
70
+ __metadata("design:type", Number)
71
+ ], EmbassyMaster.prototype, "display_order", void 0);
72
+ exports.EmbassyMaster = EmbassyMaster = __decorate([
73
+ (0, typeorm_1.Entity)({ name: 'embassy_master' }),
74
+ __metadata("design:paramtypes", [String])
75
+ ], EmbassyMaster);
@@ -0,0 +1,15 @@
1
+ import { BaseModel } from './BaseModel';
2
+ /**
3
+ * Stationery Request Materials - stores multiple materials per stationery request
4
+ * One-to-many relationship: One stationery_request can have multiple materials
5
+ */
6
+ export declare class StationeryRequestMaterials extends BaseModel {
7
+ request_id: number;
8
+ material_id: number;
9
+ material_name: string | null;
10
+ quantity_required: number;
11
+ quantity_approved: number | null;
12
+ quantity_delivered: number | null;
13
+ remarks: string | null;
14
+ constructor(request_id: number, material_id: number, material_name: string | null, quantity_required: number);
15
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.StationeryRequestMaterials = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const BaseModel_1 = require("./BaseModel");
15
+ /**
16
+ * Stationery Request Materials - stores multiple materials per stationery request
17
+ * One-to-many relationship: One stationery_request can have multiple materials
18
+ */
19
+ let StationeryRequestMaterials = class StationeryRequestMaterials extends BaseModel_1.BaseModel {
20
+ constructor(request_id, material_id, material_name, quantity_required) {
21
+ super();
22
+ this.request_id = request_id;
23
+ this.material_id = material_id;
24
+ this.material_name = material_name;
25
+ this.quantity_required = quantity_required;
26
+ }
27
+ };
28
+ exports.StationeryRequestMaterials = StationeryRequestMaterials;
29
+ __decorate([
30
+ (0, typeorm_1.Column)({ type: 'int', nullable: false }),
31
+ __metadata("design:type", Number)
32
+ ], StationeryRequestMaterials.prototype, "request_id", void 0);
33
+ __decorate([
34
+ (0, typeorm_1.Column)({ type: 'int', nullable: false }),
35
+ __metadata("design:type", Number)
36
+ ], StationeryRequestMaterials.prototype, "material_id", void 0);
37
+ __decorate([
38
+ (0, typeorm_1.Column)({ type: 'varchar', length: 255, nullable: true }),
39
+ __metadata("design:type", Object)
40
+ ], StationeryRequestMaterials.prototype, "material_name", void 0);
41
+ __decorate([
42
+ (0, typeorm_1.Column)({ type: 'int', nullable: false }),
43
+ __metadata("design:type", Number)
44
+ ], StationeryRequestMaterials.prototype, "quantity_required", void 0);
45
+ __decorate([
46
+ (0, typeorm_1.Column)({ type: 'int', nullable: true }),
47
+ __metadata("design:type", Object)
48
+ ], StationeryRequestMaterials.prototype, "quantity_approved", void 0);
49
+ __decorate([
50
+ (0, typeorm_1.Column)({ type: 'int', nullable: true }),
51
+ __metadata("design:type", Object)
52
+ ], StationeryRequestMaterials.prototype, "quantity_delivered", void 0);
53
+ __decorate([
54
+ (0, typeorm_1.Column)({ type: 'varchar', length: 500, nullable: true }),
55
+ __metadata("design:type", Object)
56
+ ], StationeryRequestMaterials.prototype, "remarks", void 0);
57
+ exports.StationeryRequestMaterials = StationeryRequestMaterials = __decorate([
58
+ (0, typeorm_1.Entity)({ name: 'stationery_request_materials' }),
59
+ __metadata("design:paramtypes", [Number, Number, Object, Number])
60
+ ], StationeryRequestMaterials);
@@ -0,0 +1,18 @@
1
+ import { BaseModel } from './BaseModel';
2
+ export declare class UserDependents extends BaseModel {
3
+ user_id: number;
4
+ first_name: string | null;
5
+ last_name: string | null;
6
+ family_name: string | null;
7
+ dob: Date | null;
8
+ age: number | null;
9
+ relation_type: string | null;
10
+ passport_available: boolean;
11
+ passport_number: string | null;
12
+ passport_type: string | null;
13
+ passport_issue_date: Date | null;
14
+ passport_place_of_issue: string | null;
15
+ passport_expiry_date: Date | null;
16
+ is_active: boolean;
17
+ constructor(user_id?: number, first_name?: string, last_name?: string, family_name?: string, dob?: Date, age?: number, relation_type?: string, passport_available?: boolean, passport_number?: string, passport_type?: string, passport_issue_date?: Date, passport_place_of_issue?: string, passport_expiry_date?: Date);
18
+ }
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.UserDependents = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const BaseModel_1 = require("./BaseModel");
15
+ let UserDependents = class UserDependents extends BaseModel_1.BaseModel {
16
+ constructor(user_id, first_name, last_name, family_name, dob, age, relation_type, passport_available, passport_number, passport_type, passport_issue_date, passport_place_of_issue, passport_expiry_date) {
17
+ super();
18
+ this.user_id = user_id || 0;
19
+ this.first_name = first_name || null;
20
+ this.last_name = last_name || null;
21
+ this.family_name = family_name || null;
22
+ this.dob = dob || null;
23
+ this.age = age || null;
24
+ this.relation_type = relation_type || null;
25
+ this.passport_available = passport_available || false;
26
+ this.passport_number = passport_number || null;
27
+ this.passport_type = passport_type || null;
28
+ this.passport_issue_date = passport_issue_date || null;
29
+ this.passport_place_of_issue = passport_place_of_issue || null;
30
+ this.passport_expiry_date = passport_expiry_date || null;
31
+ this.is_active = true;
32
+ }
33
+ };
34
+ exports.UserDependents = UserDependents;
35
+ __decorate([
36
+ (0, typeorm_1.Column)({ type: 'int', nullable: false }),
37
+ __metadata("design:type", Number)
38
+ ], UserDependents.prototype, "user_id", void 0);
39
+ __decorate([
40
+ (0, typeorm_1.Column)({ type: 'varchar', length: 255, nullable: true }),
41
+ __metadata("design:type", Object)
42
+ ], UserDependents.prototype, "first_name", void 0);
43
+ __decorate([
44
+ (0, typeorm_1.Column)({ type: 'varchar', length: 255, nullable: true }),
45
+ __metadata("design:type", Object)
46
+ ], UserDependents.prototype, "last_name", void 0);
47
+ __decorate([
48
+ (0, typeorm_1.Column)({ type: 'varchar', length: 255, nullable: true }),
49
+ __metadata("design:type", Object)
50
+ ], UserDependents.prototype, "family_name", void 0);
51
+ __decorate([
52
+ (0, typeorm_1.Column)({ type: 'date', nullable: true }),
53
+ __metadata("design:type", Object)
54
+ ], UserDependents.prototype, "dob", void 0);
55
+ __decorate([
56
+ (0, typeorm_1.Column)({ type: 'int', nullable: true }),
57
+ __metadata("design:type", Object)
58
+ ], UserDependents.prototype, "age", void 0);
59
+ __decorate([
60
+ (0, typeorm_1.Column)({ type: 'varchar', length: 100, nullable: true }),
61
+ __metadata("design:type", Object)
62
+ ], UserDependents.prototype, "relation_type", void 0);
63
+ __decorate([
64
+ (0, typeorm_1.Column)({ type: 'boolean', default: false }),
65
+ __metadata("design:type", Boolean)
66
+ ], UserDependents.prototype, "passport_available", void 0);
67
+ __decorate([
68
+ (0, typeorm_1.Column)({ type: 'varchar', length: 100, nullable: true }),
69
+ __metadata("design:type", Object)
70
+ ], UserDependents.prototype, "passport_number", void 0);
71
+ __decorate([
72
+ (0, typeorm_1.Column)({ type: 'varchar', length: 100, nullable: true }),
73
+ __metadata("design:type", Object)
74
+ ], UserDependents.prototype, "passport_type", void 0);
75
+ __decorate([
76
+ (0, typeorm_1.Column)({ type: 'date', nullable: true }),
77
+ __metadata("design:type", Object)
78
+ ], UserDependents.prototype, "passport_issue_date", void 0);
79
+ __decorate([
80
+ (0, typeorm_1.Column)({ type: 'varchar', length: 255, nullable: true }),
81
+ __metadata("design:type", Object)
82
+ ], UserDependents.prototype, "passport_place_of_issue", void 0);
83
+ __decorate([
84
+ (0, typeorm_1.Column)({ type: 'date', nullable: true }),
85
+ __metadata("design:type", Object)
86
+ ], UserDependents.prototype, "passport_expiry_date", void 0);
87
+ __decorate([
88
+ (0, typeorm_1.Column)({ type: 'boolean', default: true }),
89
+ __metadata("design:type", Boolean)
90
+ ], UserDependents.prototype, "is_active", void 0);
91
+ exports.UserDependents = UserDependents = __decorate([
92
+ (0, typeorm_1.Entity)({ name: 'user_dependents' }),
93
+ __metadata("design:paramtypes", [Number, String, String, String, Date, Number, String, Boolean, String, String, Date, String, Date])
94
+ ], UserDependents);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platform-modules/foreign-ministry",
3
- "version": "1.3.112",
3
+ "version": "1.3.113",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
@@ -174,7 +174,7 @@ export const AppDataSource = new DataSource({
174
174
  username: process.env.DB_USER || 'postgres',
175
175
  password: process.env.DB_PASS || 'postgres',
176
176
  database: process.env.DB_NAME || 'common_models',
177
- synchronize: true, // auto-create tables (disable in prod)
177
+ synchronize: false, // auto-create tables (disable in prod)
178
178
  logging: false,
179
179
  entities: [
180
180
  User,
package/src/index.ts CHANGED
@@ -173,6 +173,7 @@ export * from './models/StayAfterHoursTransactionModel';
173
173
  export { StayAfterHoursTransaction, StayAfterHoursTransactionStatus } from './models/StayAfterHoursTransactionModel';
174
174
  export * from './models/TelephoneDirectoryModel';
175
175
  export * from './models/StationeryRequestsModel';
176
+ export * from './models/StationeryRequestMaterialsModel';
176
177
  export * from './models/StationeryMaterialMasterModel';
177
178
  export * from './models/ProfileUpdateRequestsModel';
178
179
  export * from './models/UserPersonalDetailsModel';
@@ -1,177 +1,177 @@
1
- import { Column, Entity, OneToMany } from "typeorm";
2
- import { BaseModel } from './BaseModel';
3
- import { RegisterCandidateExperienceActivity } from './RegisterCandidateExperienceActivityModel';
4
-
5
- export enum RegisterCandidateStatus {
6
- PENDING = "Pending",
7
- ASSIGNED = "Assigned",
8
- IN_PROGRESS = "In Progress",
9
- APPROVED = "Approved",
10
- REJECTED = "Rejected"
11
- }
12
-
13
- export enum CandidateStatusType {
14
- SELECTED = "Selected",
15
- REJECTED = "Rejected",
16
- JOINED = "Joined",
17
- NOT_JOINED = "Not Joined"
18
- }
19
-
20
- @Entity({ name: 'register_candidate_requests' })
21
- export class RegisterCandidateRequests extends BaseModel {
22
-
23
- // Common columns from register_vacancy_requests
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
- // New columns - Personal Information
40
- @Column({ type: 'varchar', length: 255, nullable: true })
41
- relationship: string | null;
42
-
43
- @Column({ type: 'varchar', length: 255, nullable: true })
44
- place_of_birth: string | null;
45
-
46
- @Column({ type: 'date', nullable: true })
47
- date_of_birth: Date | null;
48
-
49
- @Column({ type: 'varchar', length: 255, nullable: true })
50
- nationality: string | null;
51
-
52
- @Column({ type: 'varchar', length: 255, nullable: true })
53
- religion_and_sect: string | null;
54
-
55
- @Column({ type: 'varchar', length: 255, nullable: true })
56
- sub_religion_and_sect: string | null;
57
-
58
- @Column({ type: 'text', nullable: true })
59
- present_residence: string | null;
60
-
61
- @Column({ type: 'varchar', length: 255, nullable: true })
62
- occupation_and_employer: string | null;
63
-
64
- // Education Information
65
- @Column({ type: 'text', nullable: true })
66
- type_of_study_specializations_qualification: string | null;
67
-
68
- @Column({ type: 'varchar', length: 255, nullable: true })
69
- educational_institute: string | null;
70
-
71
- @Column({ type: 'varchar', length: 255, nullable: true })
72
- education_country: string | null;
73
-
74
- @Column({ type: 'date', nullable: true })
75
- education_period_from: Date | null;
76
-
77
- @Column({ type: 'date', nullable: true })
78
- education_period_to: Date | null;
79
-
80
- // Note: Employment, Activity, and Charge Information fields have been moved to
81
- // register_candidate_experience_activity table to support multiple experience records
82
-
83
- // First Address
84
- @Column({ type: 'varchar', length: 255, nullable: true })
85
- address1_country_state: string | null;
86
-
87
- @Column({ type: 'varchar', length: 100, nullable: true })
88
- address1_street_no: string | null;
89
-
90
- @Column({ type: 'varchar', length: 100, nullable: true })
91
- address1_road_no: string | null;
92
-
93
- @Column({ type: 'varchar', length: 100, nullable: true })
94
- address1_flat_building_no: string | null;
95
-
96
- @Column({ type: 'text', nullable: true })
97
- address1_po_box_telephone_fax: string | null;
98
-
99
- // Second Address
100
- @Column({ type: 'varchar', length: 255, nullable: true })
101
- address2_country_state: string | null;
102
-
103
- @Column({ type: 'varchar', length: 100, nullable: true })
104
- address2_street_no: string | null;
105
-
106
- @Column({ type: 'varchar', length: 100, nullable: true })
107
- address2_road_no: string | null;
108
-
109
- @Column({ type: 'varchar', length: 100, nullable: true })
110
- address2_flat_building_no: string | null;
111
-
112
- @Column({ type: 'text', nullable: true })
113
- address2_po_box_telephone_fax: string | null;
114
-
115
- // Reference Information
116
- @Column({ type: 'varchar', length: 255, nullable: true })
117
- reference_full_name: string | null;
118
-
119
- @Column({ type: 'text', nullable: true })
120
- reference_address_and_telephone: string | null;
121
-
122
- @Column({ type: 'varchar', length: 255, nullable: true })
123
- telephone_number: string | null;
124
-
125
- @Column({ type: 'varchar', length: 255, nullable: true })
126
- reference_employer: string | null;
127
-
128
- // Vacancy Information
129
- @Column({ type: 'int', nullable: true })
130
- vacancy_id: number | null;
131
-
132
- @Column({ type: 'text', nullable: true })
133
- vacancy_description: string | null;
134
-
135
- // Interview Information
136
- @Column({ type: 'date', nullable: true })
137
- interview_schedule_date: Date | null;
138
-
139
- @Column({ type: 'time', nullable: true })
140
- interview_schedule_time: string | null;
141
-
142
- @Column({ type: 'varchar', length: 255, nullable: true })
143
- interviewer_name: string | null;
144
-
145
- // Candidate Status
146
- @Column({ type: 'enum', enum: CandidateStatusType, nullable: true })
147
- candidate_status: CandidateStatusType | null;
148
-
149
- @Column({ type: 'date', nullable: true })
150
- joining_date: Date | null;
151
-
152
- // Salary Information
153
- @Column({ type: 'varchar', length: 255, nullable: true })
154
- salary: string | null;
155
-
156
- @Column({ type: 'varchar', length: 255, nullable: true })
157
- currency: string | null;
158
-
159
- @Column({ type: 'varchar', length: 255, nullable: true })
160
- expected_salary: string | null;
161
-
162
- @Column({ type: 'varchar', length: 255, nullable: true })
163
- expected_currency: string | null;
164
-
165
- @Column({ type: 'varchar', length: 255, nullable: true })
166
- currency_type: string | null;
167
-
168
- @Column({ type: 'enum', enum: RegisterCandidateStatus, default: RegisterCandidateStatus.PENDING, nullable: false })
169
- status: RegisterCandidateStatus;
170
-
171
- @Column({ type: 'varchar', nullable: true })
172
- workflow_execution_id: string | null;
173
-
174
- @OneToMany(() => RegisterCandidateExperienceActivity, (experienceActivity) => experienceActivity.request)
175
- experience_activities: RegisterCandidateExperienceActivity[];
176
-
177
- }
1
+ import { Column, Entity, OneToMany } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+ import { RegisterCandidateExperienceActivity } from './RegisterCandidateExperienceActivityModel';
4
+
5
+ export enum RegisterCandidateStatus {
6
+ PENDING = "Pending",
7
+ ASSIGNED = "Assigned",
8
+ IN_PROGRESS = "In Progress",
9
+ APPROVED = "Approved",
10
+ REJECTED = "Rejected"
11
+ }
12
+
13
+ export enum CandidateStatusType {
14
+ SELECTED = "Selected",
15
+ REJECTED = "Rejected",
16
+ JOINED = "Joined",
17
+ NOT_JOINED = "Not Joined"
18
+ }
19
+
20
+ @Entity({ name: 'register_candidate_requests' })
21
+ export class RegisterCandidateRequests extends BaseModel {
22
+
23
+ // Common columns from register_vacancy_requests
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
+ // New columns - Personal Information
40
+ @Column({ type: 'varchar', length: 255, nullable: true })
41
+ relationship: string | null;
42
+
43
+ @Column({ type: 'varchar', length: 255, nullable: true })
44
+ place_of_birth: string | null;
45
+
46
+ @Column({ type: 'date', nullable: true })
47
+ date_of_birth: Date | null;
48
+
49
+ @Column({ type: 'varchar', length: 255, nullable: true })
50
+ nationality: string | null;
51
+
52
+ @Column({ type: 'varchar', length: 255, nullable: true })
53
+ religion_and_sect: string | null;
54
+
55
+ @Column({ type: 'varchar', length: 255, nullable: true })
56
+ sub_religion_and_sect: string | null;
57
+
58
+ @Column({ type: 'text', nullable: true })
59
+ present_residence: string | null;
60
+
61
+ @Column({ type: 'varchar', length: 255, nullable: true })
62
+ occupation_and_employer: string | null;
63
+
64
+ // Education Information
65
+ @Column({ type: 'text', nullable: true })
66
+ type_of_study_specializations_qualification: string | null;
67
+
68
+ @Column({ type: 'varchar', length: 255, nullable: true })
69
+ educational_institute: string | null;
70
+
71
+ @Column({ type: 'varchar', length: 255, nullable: true })
72
+ education_country: string | null;
73
+
74
+ @Column({ type: 'date', nullable: true })
75
+ education_period_from: Date | null;
76
+
77
+ @Column({ type: 'date', nullable: true })
78
+ education_period_to: Date | null;
79
+
80
+ // Note: Employment, Activity, and Charge Information fields have been moved to
81
+ // register_candidate_experience_activity table to support multiple experience records
82
+
83
+ // First Address
84
+ @Column({ type: 'varchar', length: 255, nullable: true })
85
+ address1_country_state: string | null;
86
+
87
+ @Column({ type: 'varchar', length: 100, nullable: true })
88
+ address1_street_no: string | null;
89
+
90
+ @Column({ type: 'varchar', length: 100, nullable: true })
91
+ address1_road_no: string | null;
92
+
93
+ @Column({ type: 'varchar', length: 100, nullable: true })
94
+ address1_flat_building_no: string | null;
95
+
96
+ @Column({ type: 'text', nullable: true })
97
+ address1_po_box_telephone_fax: string | null;
98
+
99
+ // Second Address
100
+ @Column({ type: 'varchar', length: 255, nullable: true })
101
+ address2_country_state: string | null;
102
+
103
+ @Column({ type: 'varchar', length: 100, nullable: true })
104
+ address2_street_no: string | null;
105
+
106
+ @Column({ type: 'varchar', length: 100, nullable: true })
107
+ address2_road_no: string | null;
108
+
109
+ @Column({ type: 'varchar', length: 100, nullable: true })
110
+ address2_flat_building_no: string | null;
111
+
112
+ @Column({ type: 'text', nullable: true })
113
+ address2_po_box_telephone_fax: string | null;
114
+
115
+ // Reference Information
116
+ @Column({ type: 'varchar', length: 255, nullable: true })
117
+ reference_full_name: string | null;
118
+
119
+ @Column({ type: 'text', nullable: true })
120
+ reference_address_and_telephone: string | null;
121
+
122
+ @Column({ type: 'varchar', length: 255, nullable: true })
123
+ telephone_number: string | null;
124
+
125
+ @Column({ type: 'varchar', length: 255, nullable: true })
126
+ reference_employer: string | null;
127
+
128
+ // Vacancy Information
129
+ @Column({ type: 'int', nullable: true })
130
+ vacancy_id: number | null;
131
+
132
+ @Column({ type: 'text', nullable: true })
133
+ vacancy_description: string | null;
134
+
135
+ // Interview Information
136
+ @Column({ type: 'date', nullable: true })
137
+ interview_schedule_date: Date | null;
138
+
139
+ @Column({ type: 'time', nullable: true })
140
+ interview_schedule_time: string | null;
141
+
142
+ @Column({ type: 'varchar', length: 255, nullable: true })
143
+ interviewer_name: string | null;
144
+
145
+ // Candidate Status
146
+ @Column({ type: 'enum', enum: CandidateStatusType, nullable: true })
147
+ candidate_status: CandidateStatusType | null;
148
+
149
+ @Column({ type: 'date', nullable: true })
150
+ joining_date: Date | null;
151
+
152
+ // Salary Information
153
+ @Column({ type: 'varchar', length: 255, nullable: true })
154
+ salary: string | null;
155
+
156
+ @Column({ type: 'varchar', length: 255, nullable: true })
157
+ currency: string | null;
158
+
159
+ @Column({ type: 'varchar', length: 255, nullable: true })
160
+ expected_salary: string | null;
161
+
162
+ @Column({ type: 'varchar', length: 255, nullable: true })
163
+ expected_currency: string | null;
164
+
165
+ @Column({ type: 'varchar', length: 255, nullable: true })
166
+ currency_type: string | null;
167
+
168
+ @Column({ type: 'enum', enum: RegisterCandidateStatus, default: RegisterCandidateStatus.PENDING, nullable: false })
169
+ status: RegisterCandidateStatus;
170
+
171
+ @Column({ type: 'varchar', nullable: true })
172
+ workflow_execution_id: string | null;
173
+
174
+ @OneToMany(() => RegisterCandidateExperienceActivity, (experienceActivity) => experienceActivity.request)
175
+ experience_activities: RegisterCandidateExperienceActivity[];
176
+
177
+ }
@@ -0,0 +1,43 @@
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ /**
5
+ * Stationery Request Materials - stores multiple materials per stationery request
6
+ * One-to-many relationship: One stationery_request can have multiple materials
7
+ */
8
+ @Entity({ name: 'stationery_request_materials' })
9
+ export class StationeryRequestMaterials extends BaseModel {
10
+ @Column({ type: 'int', nullable: false })
11
+ request_id: number; // Foreign key to stationery_requests table
12
+
13
+ @Column({ type: 'int', nullable: false })
14
+ material_id: number; // Reference to stationery_material_master table
15
+
16
+ @Column({ type: 'varchar', length: 255, nullable: true })
17
+ material_name: string | null; // Material name (denormalized for quick access)
18
+
19
+ @Column({ type: 'int', nullable: false })
20
+ quantity_required: number; // Quantity requested
21
+
22
+ @Column({ type: 'int', nullable: true })
23
+ quantity_approved: number | null; // Quantity approved (can be different from requested)
24
+
25
+ @Column({ type: 'int', nullable: true })
26
+ quantity_delivered: number | null; // Quantity actually delivered
27
+
28
+ @Column({ type: 'varchar', length: 500, nullable: true })
29
+ remarks: string | null; // Any remarks for this specific material
30
+
31
+ constructor(
32
+ request_id: number,
33
+ material_id: number,
34
+ material_name: string | null,
35
+ quantity_required: number
36
+ ) {
37
+ super();
38
+ this.request_id = request_id;
39
+ this.material_id = material_id;
40
+ this.material_name = material_name;
41
+ this.quantity_required = quantity_required;
42
+ }
43
+ }
@@ -1,6 +0,0 @@
1
- import { BaseModel } from './BaseModel';
2
- export declare class HelpContentMappedCategories extends BaseModel {
3
- help_content_category_Id: number;
4
- help_content_Id: number;
5
- constructor(help_content_category_Id: number, help_content_Id: number);
6
- }
@@ -1,34 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.HelpContentMappedCategories = void 0;
13
- const typeorm_1 = require("typeorm");
14
- const BaseModel_1 = require("./BaseModel");
15
- let HelpContentMappedCategories = class HelpContentMappedCategories extends BaseModel_1.BaseModel {
16
- constructor(help_content_category_Id, help_content_Id) {
17
- super();
18
- this.help_content_category_Id = help_content_category_Id,
19
- this.help_content_Id = help_content_Id;
20
- }
21
- };
22
- exports.HelpContentMappedCategories = HelpContentMappedCategories;
23
- __decorate([
24
- (0, typeorm_1.Column)({ nullable: true }),
25
- __metadata("design:type", Number)
26
- ], HelpContentMappedCategories.prototype, "help_content_category_Id", void 0);
27
- __decorate([
28
- (0, typeorm_1.Column)({ nullable: true }),
29
- __metadata("design:type", Number)
30
- ], HelpContentMappedCategories.prototype, "help_content_Id", void 0);
31
- exports.HelpContentMappedCategories = HelpContentMappedCategories = __decorate([
32
- (0, typeorm_1.Entity)({ name: 'help_content_mapped_categories' }),
33
- __metadata("design:paramtypes", [Number, Number])
34
- ], HelpContentMappedCategories);
@@ -1,6 +0,0 @@
1
- import { BaseModel } from './BaseModel';
2
- export declare class HelpContentMappedTags extends BaseModel {
3
- help_content_tag_Id: number;
4
- help_content_Id: number;
5
- constructor(help_content_tag_Id: number, help_content_Id: number);
6
- }
@@ -1,34 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.HelpContentMappedTags = void 0;
13
- const typeorm_1 = require("typeorm");
14
- const BaseModel_1 = require("./BaseModel");
15
- let HelpContentMappedTags = class HelpContentMappedTags extends BaseModel_1.BaseModel {
16
- constructor(help_content_tag_Id, help_content_Id) {
17
- super();
18
- this.help_content_tag_Id = help_content_tag_Id,
19
- this.help_content_Id = help_content_Id;
20
- }
21
- };
22
- exports.HelpContentMappedTags = HelpContentMappedTags;
23
- __decorate([
24
- (0, typeorm_1.Column)({ nullable: true }),
25
- __metadata("design:type", Number)
26
- ], HelpContentMappedTags.prototype, "help_content_tag_Id", void 0);
27
- __decorate([
28
- (0, typeorm_1.Column)({ nullable: true }),
29
- __metadata("design:type", Number)
30
- ], HelpContentMappedTags.prototype, "help_content_Id", void 0);
31
- exports.HelpContentMappedTags = HelpContentMappedTags = __decorate([
32
- (0, typeorm_1.Entity)({ name: 'help_content_mapped_tags' }),
33
- __metadata("design:paramtypes", [Number, Number])
34
- ], HelpContentMappedTags);
@@ -1,5 +0,0 @@
1
- import { BaseModel } from './BaseModel';
2
- export declare class HelpContentTags extends BaseModel {
3
- name: string;
4
- constructor(name: string);
5
- }
@@ -1,29 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.HelpContentTags = void 0;
13
- const typeorm_1 = require("typeorm");
14
- const BaseModel_1 = require("./BaseModel");
15
- let HelpContentTags = class HelpContentTags extends BaseModel_1.BaseModel {
16
- constructor(name) {
17
- super();
18
- this.name = name;
19
- }
20
- };
21
- exports.HelpContentTags = HelpContentTags;
22
- __decorate([
23
- (0, typeorm_1.Column)({ nullable: true }),
24
- __metadata("design:type", String)
25
- ], HelpContentTags.prototype, "name", void 0);
26
- exports.HelpContentTags = HelpContentTags = __decorate([
27
- (0, typeorm_1.Entity)({ name: 'help_content_tags' }),
28
- __metadata("design:paramtypes", [String])
29
- ], HelpContentTags);
@@ -1,6 +0,0 @@
1
- import { BaseModel } from './BaseModel';
2
- export declare class QuestionTags extends BaseModel {
3
- name: string;
4
- question_Id: number;
5
- constructor(name: string, question_Id: number);
6
- }
@@ -1,34 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.QuestionTags = void 0;
13
- const typeorm_1 = require("typeorm");
14
- const BaseModel_1 = require("./BaseModel");
15
- let QuestionTags = class QuestionTags extends BaseModel_1.BaseModel {
16
- constructor(name, question_Id) {
17
- super();
18
- this.name = name,
19
- this.question_Id = question_Id;
20
- }
21
- };
22
- exports.QuestionTags = QuestionTags;
23
- __decorate([
24
- (0, typeorm_1.Column)({ nullable: true }),
25
- __metadata("design:type", String)
26
- ], QuestionTags.prototype, "name", void 0);
27
- __decorate([
28
- (0, typeorm_1.Column)({ nullable: true }),
29
- __metadata("design:type", Number)
30
- ], QuestionTags.prototype, "question_Id", void 0);
31
- exports.QuestionTags = QuestionTags = __decorate([
32
- (0, typeorm_1.Entity)({ name: 'question_tags' }),
33
- __metadata("design:paramtypes", [String, Number])
34
- ], QuestionTags);
@@ -1,150 +0,0 @@
1
- -- ============================================================
2
- -- Fix for TypeORM enum conflict issue
3
- -- Run these queries in your PostgreSQL database to resolve the enum type conflict
4
- -- ============================================================
5
-
6
- -- Step 1: Check existing enum types (for reference)
7
- SELECT typname, typtype
8
- FROM pg_type
9
- WHERE typname LIKE '%lms_external_course_participation_approvals_approval_status%';
10
-
11
- -- Step 2: Drop the old enum type if it exists (from previous failed sync attempts)
12
- DROP TYPE IF EXISTS "lms_external_course_participation_approvals_approval_status_enu_old" CASCADE;
13
-
14
- -- Step 3: Check if the table exists and what columns use the enum
15
- SELECT
16
- table_name,
17
- column_name,
18
- data_type,
19
- udt_name
20
- FROM information_schema.columns
21
- WHERE table_name = 'lms_external_course_participation_approvals'
22
- AND column_name = 'approval_status';
23
-
24
- -- Step 4: If the table exists, we need to handle the enum carefully
25
- -- First, let's check if the table has any data
26
- DO $$
27
- DECLARE
28
- row_count INTEGER;
29
- BEGIN
30
- SELECT COUNT(*) INTO row_count
31
- FROM information_schema.tables
32
- WHERE table_schema = 'public'
33
- AND table_name = 'lms_external_course_participation_approvals';
34
-
35
- IF row_count > 0 THEN
36
- RAISE NOTICE 'Table exists. Proceeding with safe enum update...';
37
- ELSE
38
- RAISE NOTICE 'Table does not exist. Enum will be created when table is created.';
39
- END IF;
40
- END $$;
41
-
42
- -- Step 5: Drop the existing enum type if it exists (we'll recreate it)
43
- -- Note: This will fail if the enum is in use, so we handle it in the next step
44
- DO $$
45
- BEGIN
46
- -- Try to drop the enum type
47
- IF EXISTS (SELECT 1 FROM pg_type WHERE typname = 'lms_external_course_participation_approvals_approval_status_enu') THEN
48
- -- Check if it's being used by any column
49
- IF EXISTS (
50
- SELECT 1
51
- FROM information_schema.columns
52
- WHERE udt_name = 'lms_external_course_participation_approvals_approval_status_enu'
53
- ) THEN
54
- RAISE NOTICE 'Enum type is in use. Changing column to text first...';
55
-
56
- -- Change the column to text temporarily
57
- ALTER TABLE IF EXISTS lms_external_course_participation_approvals
58
- ALTER COLUMN approval_status TYPE text USING approval_status::text;
59
-
60
- -- Now drop the enum
61
- DROP TYPE IF EXISTS "lms_external_course_participation_approvals_approval_status_enu" CASCADE;
62
-
63
- RAISE NOTICE 'Enum type dropped. Recreating with correct values...';
64
- ELSE
65
- -- Not in use, safe to drop
66
- DROP TYPE IF EXISTS "lms_external_course_participation_approvals_approval_status_enu" CASCADE;
67
- RAISE NOTICE 'Enum type dropped (was not in use).';
68
- END IF;
69
- ELSE
70
- RAISE NOTICE 'Enum type does not exist.';
71
- END IF;
72
- END $$;
73
-
74
- -- Step 6: Create the enum type with correct values
75
- DO $$
76
- BEGIN
77
- IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'lms_external_course_participation_approvals_approval_status_enu') THEN
78
- CREATE TYPE "lms_external_course_participation_approvals_approval_status_enu" AS ENUM (
79
- 'Pending',
80
- 'In Progress',
81
- 'Approved',
82
- 'Rejected'
83
- );
84
- RAISE NOTICE 'Enum type created successfully.';
85
- ELSE
86
- RAISE NOTICE 'Enum type already exists.';
87
- END IF;
88
- END $$;
89
-
90
- -- Step 7: If table exists and column was changed to text, change it back to enum
91
- DO $$
92
- BEGIN
93
- IF EXISTS (
94
- SELECT 1
95
- FROM information_schema.columns
96
- WHERE table_name = 'lms_external_course_participation_approvals'
97
- AND column_name = 'approval_status'
98
- AND data_type = 'text'
99
- ) THEN
100
- RAISE NOTICE 'Changing column back to enum type...';
101
-
102
- -- Change column back to enum type
103
- ALTER TABLE lms_external_course_participation_approvals
104
- ALTER COLUMN approval_status TYPE "lms_external_course_participation_approvals_approval_status_enu"
105
- USING approval_status::"lms_external_course_participation_approvals_approval_status_enu";
106
-
107
- -- Set default value
108
- ALTER TABLE lms_external_course_participation_approvals
109
- ALTER COLUMN approval_status SET DEFAULT 'Pending'::"lms_external_course_participation_approvals_approval_status_enu";
110
-
111
- -- Set NOT NULL constraint
112
- ALTER TABLE lms_external_course_participation_approvals
113
- ALTER COLUMN approval_status SET NOT NULL;
114
-
115
- RAISE NOTICE 'Column changed back to enum type successfully.';
116
- ELSE
117
- RAISE NOTICE 'Column is already using enum type or table does not exist.';
118
- END IF;
119
- END $$;
120
-
121
- -- Step 8: Verify the fix
122
- SELECT
123
- typname as enum_name,
124
- array_agg(enumlabel ORDER BY enumsortorder) as enum_values
125
- FROM pg_type t
126
- JOIN pg_enum e ON t.oid = e.enumtypid
127
- WHERE typname = 'lms_external_course_participation_approvals_approval_status_enu'
128
- GROUP BY typname;
129
-
130
- -- Step 9: Final verification - check table structure
131
- SELECT
132
- column_name,
133
- data_type,
134
- udt_name,
135
- column_default,
136
- is_nullable
137
- FROM information_schema.columns
138
- WHERE table_name = 'lms_external_course_participation_approvals'
139
- AND column_name = 'approval_status';
140
-
141
- -- ============================================================
142
- -- Summary:
143
- -- 1. Dropped old enum type (_old version)
144
- -- 2. Dropped existing enum type if it exists
145
- -- 3. Created new enum type with correct values
146
- -- 4. Updated column to use enum type if table exists
147
- --
148
- -- After running this script, restart your application.
149
- -- TypeORM synchronize should work correctly now.
150
- -- ============================================================
@@ -1,38 +0,0 @@
1
- -- ============================================================
2
- -- SIMPLE FIX - Run these queries in order
3
- -- ============================================================
4
-
5
- -- Query 1: Drop the old enum type (from previous failed attempts)
6
- DROP TYPE IF EXISTS "lms_external_course_participation_approvals_approval_status_enu_old" CASCADE;
7
-
8
- -- Query 2: If table exists, change column to text temporarily
9
- ALTER TABLE IF EXISTS lms_external_course_participation_approvals
10
- ALTER COLUMN approval_status TYPE text USING approval_status::text;
11
-
12
- -- Query 3: Drop the existing enum type
13
- DROP TYPE IF EXISTS "lms_external_course_participation_approvals_approval_status_enu" CASCADE;
14
-
15
- -- Query 4: Create the enum type with correct values
16
- CREATE TYPE "lms_external_course_participation_approvals_approval_status_enu" AS ENUM (
17
- 'Pending',
18
- 'In Progress',
19
- 'Approved',
20
- 'Rejected'
21
- );
22
-
23
- -- Query 5: Change column back to enum type (if table exists)
24
- ALTER TABLE IF EXISTS lms_external_course_participation_approvals
25
- ALTER COLUMN approval_status TYPE "lms_external_course_participation_approvals_approval_status_enu"
26
- USING approval_status::"lms_external_course_participation_approvals_approval_status_enu";
27
-
28
- -- Query 6: Set default value (if table exists)
29
- ALTER TABLE IF EXISTS lms_external_course_participation_approvals
30
- ALTER COLUMN approval_status SET DEFAULT 'Pending'::"lms_external_course_participation_approvals_approval_status_enu";
31
-
32
- -- Query 7: Set NOT NULL constraint (if table exists)
33
- ALTER TABLE IF EXISTS lms_external_course_participation_approvals
34
- ALTER COLUMN approval_status SET NOT NULL;
35
-
36
- -- ============================================================
37
- -- After running these queries, restart your application
38
- -- ============================================================
@@ -1,23 +0,0 @@
1
- -- Fix for TypeORM enum conflict issue
2
- -- Run this SQL script in your PostgreSQL database to resolve the enum type conflict
3
-
4
- -- Drop the old enum type if it exists (from previous failed sync attempts)
5
- DROP TYPE IF EXISTS "lms_external_course_participation_approvals_approval_status_enu_old" CASCADE;
6
-
7
- -- Verify the current enum type exists and has correct values
8
- DO $$
9
- BEGIN
10
- -- Check if the enum type exists
11
- IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'lms_external_course_participation_approvals_approval_status_enu') THEN
12
- -- Create the enum type if it doesn't exist
13
- CREATE TYPE "lms_external_course_participation_approvals_approval_status_enu" AS ENUM (
14
- 'Pending',
15
- 'In Progress',
16
- 'Approved',
17
- 'Rejected'
18
- );
19
- END IF;
20
- END $$;
21
-
22
- -- Note: After running this script, restart your application
23
- -- The TypeORM synchronize should work correctly now