@valentine-efagene/qshelter-common 2.0.94 → 2.0.96

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 (51) hide show
  1. package/dist/generated/client/browser.d.ts +16 -16
  2. package/dist/generated/client/client.d.ts +16 -16
  3. package/dist/generated/client/commonInputTypes.d.ts +72 -72
  4. package/dist/generated/client/enums.d.ts +13 -13
  5. package/dist/generated/client/enums.js +10 -10
  6. package/dist/generated/client/internal/class.d.ts +32 -32
  7. package/dist/generated/client/internal/class.js +2 -2
  8. package/dist/generated/client/internal/prismaNamespace.d.ts +321 -321
  9. package/dist/generated/client/internal/prismaNamespace.js +50 -50
  10. package/dist/generated/client/internal/prismaNamespaceBrowser.d.ts +66 -66
  11. package/dist/generated/client/internal/prismaNamespaceBrowser.js +50 -50
  12. package/dist/generated/client/models/Application.d.ts +5439 -0
  13. package/dist/generated/client/models/Application.js +1 -0
  14. package/dist/generated/client/models/ApplicationDocument.d.ts +1409 -0
  15. package/dist/generated/client/models/ApplicationDocument.js +1 -0
  16. package/dist/generated/client/models/ApplicationEvent.d.ts +1254 -0
  17. package/dist/generated/client/models/ApplicationEvent.js +1 -0
  18. package/dist/generated/client/models/ApplicationPayment.d.ts +2030 -0
  19. package/dist/generated/client/models/ApplicationPayment.js +1 -0
  20. package/dist/generated/client/models/ApplicationPhase.d.ts +2243 -0
  21. package/dist/generated/client/models/ApplicationPhase.js +1 -0
  22. package/dist/generated/client/models/ApplicationRefund.d.ts +2560 -0
  23. package/dist/generated/client/models/ApplicationRefund.js +1 -0
  24. package/dist/generated/client/models/ApplicationTermination.d.ts +3446 -0
  25. package/dist/generated/client/models/ApplicationTermination.js +1 -0
  26. package/dist/generated/client/models/DocumentationPhase.d.ts +13 -13
  27. package/dist/generated/client/models/OfferLetter.d.ts +97 -97
  28. package/dist/generated/client/models/PaymentInstallment.d.ts +1660 -0
  29. package/dist/generated/client/models/PaymentInstallment.js +1 -0
  30. package/dist/generated/client/models/PaymentMethodChangeRequest.d.ts +103 -103
  31. package/dist/generated/client/models/PaymentPhase.d.ts +40 -40
  32. package/dist/generated/client/models/PropertyPaymentMethod.d.ts +77 -77
  33. package/dist/generated/client/models/PropertyTransferRequest.d.ts +213 -213
  34. package/dist/generated/client/models/PropertyUnit.d.ts +53 -53
  35. package/dist/generated/client/models/QuestionnairePhase.d.ts +11 -11
  36. package/dist/generated/client/models/Tenant.d.ts +323 -323
  37. package/dist/generated/client/models/User.d.ts +1329 -1329
  38. package/dist/generated/client/models/index.d.ts +8 -8
  39. package/dist/generated/client/models/index.js +8 -8
  40. package/dist/generated/client/models.d.ts +8 -8
  41. package/dist/src/auth/policy-evaluator.d.ts +5 -5
  42. package/dist/src/auth/policy-evaluator.js +7 -7
  43. package/dist/src/events/notifications/notification-enums.d.ts +5 -5
  44. package/dist/src/events/notifications/notification-enums.js +6 -6
  45. package/dist/src/events/payments/payment-event.d.ts +2 -2
  46. package/dist/src/events/payments/payment-publisher.d.ts +1 -1
  47. package/package.json +1 -1
  48. package/prisma/migrations/20260112080730_rename_contract_to_application/migration.sql +293 -0
  49. package/prisma/migrations/20260112081422_cleanup_rename_contract_to_application/migration.sql +14 -0
  50. package/prisma/schema.prisma +107 -107
  51. package/prisma/schema.prisma.backup +2601 -0
@@ -1,14 +1,13 @@
1
1
  export * from './Amenity';
2
2
  export * from './ApiKey';
3
+ export * from './Application';
4
+ export * from './ApplicationDocument';
5
+ export * from './ApplicationEvent';
6
+ export * from './ApplicationPayment';
7
+ export * from './ApplicationPhase';
8
+ export * from './ApplicationRefund';
9
+ export * from './ApplicationTermination';
3
10
  export * from './ApprovalRequest';
4
- export * from './Contract';
5
- export * from './ContractDocument';
6
- export * from './ContractEvent';
7
- export * from './ContractInstallment';
8
- export * from './ContractPayment';
9
- export * from './ContractPhase';
10
- export * from './ContractRefund';
11
- export * from './ContractTermination';
12
11
  export * from './DeviceEndpoint';
13
12
  export * from './DocumentRequirementRule';
14
13
  export * from './DocumentTemplate';
@@ -25,6 +24,7 @@ export * from './EventType';
25
24
  export * from './OAuthState';
26
25
  export * from './OfferLetter';
27
26
  export * from './PasswordReset';
27
+ export * from './PaymentInstallment';
28
28
  export * from './PaymentMethodChangeRequest';
29
29
  export * from './PaymentMethodPhaseDocument';
30
30
  export * from './PaymentMethodPhaseField';
@@ -1,14 +1,13 @@
1
1
  export * from './Amenity';
2
2
  export * from './ApiKey';
3
+ export * from './Application';
4
+ export * from './ApplicationDocument';
5
+ export * from './ApplicationEvent';
6
+ export * from './ApplicationPayment';
7
+ export * from './ApplicationPhase';
8
+ export * from './ApplicationRefund';
9
+ export * from './ApplicationTermination';
3
10
  export * from './ApprovalRequest';
4
- export * from './Contract';
5
- export * from './ContractDocument';
6
- export * from './ContractEvent';
7
- export * from './ContractInstallment';
8
- export * from './ContractPayment';
9
- export * from './ContractPhase';
10
- export * from './ContractRefund';
11
- export * from './ContractTermination';
12
11
  export * from './DeviceEndpoint';
13
12
  export * from './DocumentRequirementRule';
14
13
  export * from './DocumentTemplate';
@@ -25,6 +24,7 @@ export * from './EventType';
25
24
  export * from './OAuthState';
26
25
  export * from './OfferLetter';
27
26
  export * from './PasswordReset';
27
+ export * from './PaymentInstallment';
28
28
  export * from './PaymentMethodChangeRequest';
29
29
  export * from './PaymentMethodPhaseDocument';
30
30
  export * from './PaymentMethodPhaseField';
@@ -34,23 +34,23 @@ export type * from './models/PaymentMethodPhaseStep.js';
34
34
  export type * from './models/StepEventAttachment.js';
35
35
  export type * from './models/PaymentMethodPhaseDocument.js';
36
36
  export type * from './models/PaymentMethodPhaseField.js';
37
- export type * from './models/Contract.js';
38
- export type * from './models/ContractRefund.js';
39
- export type * from './models/ContractPhase.js';
37
+ export type * from './models/Application.js';
38
+ export type * from './models/ApplicationRefund.js';
39
+ export type * from './models/ApplicationPhase.js';
40
40
  export type * from './models/QuestionnairePhase.js';
41
41
  export type * from './models/DocumentationPhase.js';
42
42
  export type * from './models/PaymentPhase.js';
43
43
  export type * from './models/QuestionnaireField.js';
44
- export type * from './models/ContractEvent.js';
44
+ export type * from './models/ApplicationEvent.js';
45
45
  export type * from './models/DocumentationStep.js';
46
46
  export type * from './models/DocumentationStepDocument.js';
47
47
  export type * from './models/DocumentationStepApproval.js';
48
- export type * from './models/ContractInstallment.js';
49
- export type * from './models/ContractPayment.js';
50
- export type * from './models/ContractDocument.js';
48
+ export type * from './models/PaymentInstallment.js';
49
+ export type * from './models/ApplicationPayment.js';
50
+ export type * from './models/ApplicationDocument.js';
51
51
  export type * from './models/DocumentTemplate.js';
52
52
  export type * from './models/OfferLetter.js';
53
- export type * from './models/ContractTermination.js';
53
+ export type * from './models/ApplicationTermination.js';
54
54
  export type * from './models/PaymentMethodChangeRequest.js';
55
55
  export type * from './models/DocumentRequirementRule.js';
56
56
  export type * from './models/EventChannel.js';
@@ -2,21 +2,21 @@
2
2
  * Policy evaluation utilities for scope-based authorization
3
3
  *
4
4
  * Scopes follow a resource:action pattern with wildcard support:
5
- * - "contract:read" - specific action on specific resource
6
- * - "contract:*" - all actions on contracts
5
+ * - "application:read" - specific action on specific resource
6
+ * - "application:*" - all actions on contracts
7
7
  * - "*" - superuser access
8
8
  *
9
9
  * @example
10
10
  * ```typescript
11
11
  * import { hasScope, requireScope } from '@valentine-efagene/qshelter-common';
12
12
  *
13
- * const scopes = ['contract:read', 'payment:*'];
13
+ * const scopes = ['application:read', 'payment:*'];
14
14
  *
15
- * hasScope(scopes, 'contract:read'); // true
15
+ * hasScope(scopes, 'application:read'); // true
16
16
  * hasScope(scopes, 'payment:create'); // true (wildcard match)
17
17
  * hasScope(scopes, 'user:read'); // false
18
18
  *
19
- * requireScope(scopes, 'contract:read'); // passes
19
+ * requireScope(scopes, 'application:read'); // passes
20
20
  * requireScope(scopes, 'user:read'); // throws 403 error
21
21
  * ```
22
22
  */
@@ -2,21 +2,21 @@
2
2
  * Policy evaluation utilities for scope-based authorization
3
3
  *
4
4
  * Scopes follow a resource:action pattern with wildcard support:
5
- * - "contract:read" - specific action on specific resource
6
- * - "contract:*" - all actions on contracts
5
+ * - "application:read" - specific action on specific resource
6
+ * - "application:*" - all actions on contracts
7
7
  * - "*" - superuser access
8
8
  *
9
9
  * @example
10
10
  * ```typescript
11
11
  * import { hasScope, requireScope } from '@valentine-efagene/qshelter-common';
12
12
  *
13
- * const scopes = ['contract:read', 'payment:*'];
13
+ * const scopes = ['application:read', 'payment:*'];
14
14
  *
15
- * hasScope(scopes, 'contract:read'); // true
15
+ * hasScope(scopes, 'application:read'); // true
16
16
  * hasScope(scopes, 'payment:create'); // true (wildcard match)
17
17
  * hasScope(scopes, 'user:read'); // false
18
18
  *
19
- * requireScope(scopes, 'contract:read'); // passes
19
+ * requireScope(scopes, 'application:read'); // passes
20
20
  * requireScope(scopes, 'user:read'); // throws 403 error
21
21
  * ```
22
22
  */
@@ -40,9 +40,9 @@ export function hasScope(scopes, required) {
40
40
  // Exact match
41
41
  if (s === required)
42
42
  return true;
43
- // Wildcard match: "contract:*" matches "contract:read"
43
+ // Wildcard match: "application:*" matches "application:read"
44
44
  if (s.endsWith(':*')) {
45
- const prefix = s.slice(0, -1); // "contract:"
45
+ const prefix = s.slice(0, -1); // "application:"
46
46
  return required.startsWith(prefix);
47
47
  }
48
48
  return false;
@@ -18,11 +18,11 @@ export declare enum NotificationType {
18
18
  PREQUALIFICATION_SUBMITTED = "prequalificationSubmitted",
19
19
  PREQUALIFICATION_APPROVED = "prequalificationApproved",
20
20
  PREQUALIFICATION_REJECTED = "prequalificationRejected",
21
- CONTRACT_CREATED = "contractCreated",
22
- CONTRACT_ACTIVATED = "contractActivated",
23
- CONTRACT_TERMINATION_REQUESTED = "contractTerminationRequested",
24
- CONTRACT_TERMINATION_APPROVED = "contractTerminationApproved",
25
- CONTRACT_TERMINATED = "contractTerminated",
21
+ APPLICATION_CREATED = "applicationCreated",
22
+ APPLICATION_ACTIVATED = "applicationActivated",
23
+ APPLICATION_TERMINATION_REQUESTED = "applicationTerminationRequested",
24
+ APPLICATION_TERMINATION_APPROVED = "applicationTerminationApproved",
25
+ APPLICATION_TERMINATED = "applicationTerminated",
26
26
  OFFER_LETTER_SENT = "offerLetterSent",
27
27
  OFFER_LETTER_SIGNED = "offerLetterSigned",
28
28
  OFFER_LETTER_EXPIRED = "offerLetterExpired",
@@ -24,12 +24,12 @@ export var NotificationType;
24
24
  NotificationType["PREQUALIFICATION_SUBMITTED"] = "prequalificationSubmitted";
25
25
  NotificationType["PREQUALIFICATION_APPROVED"] = "prequalificationApproved";
26
26
  NotificationType["PREQUALIFICATION_REJECTED"] = "prequalificationRejected";
27
- // Contract
28
- NotificationType["CONTRACT_CREATED"] = "contractCreated";
29
- NotificationType["CONTRACT_ACTIVATED"] = "contractActivated";
30
- NotificationType["CONTRACT_TERMINATION_REQUESTED"] = "contractTerminationRequested";
31
- NotificationType["CONTRACT_TERMINATION_APPROVED"] = "contractTerminationApproved";
32
- NotificationType["CONTRACT_TERMINATED"] = "contractTerminated";
27
+ // Application
28
+ NotificationType["APPLICATION_CREATED"] = "applicationCreated";
29
+ NotificationType["APPLICATION_ACTIVATED"] = "applicationActivated";
30
+ NotificationType["APPLICATION_TERMINATION_REQUESTED"] = "applicationTerminationRequested";
31
+ NotificationType["APPLICATION_TERMINATION_APPROVED"] = "applicationTerminationApproved";
32
+ NotificationType["APPLICATION_TERMINATED"] = "applicationTerminated";
33
33
  // Offer Letters
34
34
  NotificationType["OFFER_LETTER_SENT"] = "offerLetterSent";
35
35
  NotificationType["OFFER_LETTER_SIGNED"] = "offerLetterSigned";
@@ -53,8 +53,8 @@ export interface WalletCreditedPayload {
53
53
  export interface AllocateToInstallmentsPayload {
54
54
  userId: string;
55
55
  walletId: string;
56
- /** Optional: limit to specific contract */
57
- contractId?: string;
56
+ /** Optional: limit to specific application */
57
+ applicationId?: string;
58
58
  /** Optional: limit to specific amount */
59
59
  maxAmount?: number;
60
60
  }
@@ -39,7 +39,7 @@ export declare class PaymentEventPublisher {
39
39
  publishAllocateToInstallments(payload: {
40
40
  userId: string;
41
41
  walletId: string;
42
- contractId?: string;
42
+ applicationId?: string;
43
43
  maxAmount?: number;
44
44
  }, meta?: Partial<PaymentEventMeta>): Promise<string>;
45
45
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@valentine-efagene/qshelter-common",
3
- "version": "2.0.94",
3
+ "version": "2.0.96",
4
4
  "description": "Shared database schemas and utilities for QShelter services",
5
5
  "main": "dist/src/index.js",
6
6
  "types": "dist/src/index.d.ts",
@@ -0,0 +1,293 @@
1
+ -- Safe Migration: Rename Contract to Application
2
+ -- This migration uses RENAME TABLE and RENAME COLUMN to preserve data
3
+
4
+ -- Step 1: Update enum values in approval_requests
5
+ ALTER TABLE `approval_requests` MODIFY `type` ENUM('PROPERTY_TRANSFER', 'PROPERTY_UPDATE', 'USER_WORKFLOW', 'CREDIT_CHECK', 'CONTRACT_TERMINATION', 'APPLICATION_TERMINATION', 'REFUND_APPROVAL') NOT NULL;
6
+ UPDATE `approval_requests` SET `type` = 'APPLICATION_TERMINATION' WHERE `type` = 'CONTRACT_TERMINATION';
7
+ ALTER TABLE `approval_requests` MODIFY `type` ENUM('PROPERTY_TRANSFER', 'PROPERTY_UPDATE', 'USER_WORKFLOW', 'CREDIT_CHECK', 'APPLICATION_TERMINATION', 'REFUND_APPROVAL') NOT NULL;
8
+
9
+ -- Step 2: Update enum values in document_requirement_rules
10
+ ALTER TABLE `document_requirement_rules` MODIFY `context` ENUM('CONTRACT_PHASE', 'APPLICATION_PHASE', 'PAYMENT_METHOD_CHANGE') NOT NULL;
11
+ UPDATE `document_requirement_rules` SET `context` = 'APPLICATION_PHASE' WHERE `context` = 'CONTRACT_PHASE';
12
+ ALTER TABLE `document_requirement_rules` MODIFY `context` ENUM('APPLICATION_PHASE', 'PAYMENT_METHOD_CHANGE') NOT NULL;
13
+
14
+ -- Step 3: Drop existing foreign keys that reference contract tables
15
+ -- contracts table foreign keys
16
+ ALTER TABLE `contracts` DROP FOREIGN KEY `contracts_tenantId_fkey`;
17
+ ALTER TABLE `contracts` DROP FOREIGN KEY `contracts_propertyUnitId_fkey`;
18
+ ALTER TABLE `contracts` DROP FOREIGN KEY `contracts_buyerId_fkey`;
19
+ ALTER TABLE `contracts` DROP FOREIGN KEY `contracts_sellerId_fkey`;
20
+ ALTER TABLE `contracts` DROP FOREIGN KEY `contracts_paymentMethodId_fkey`;
21
+ ALTER TABLE `contracts` DROP FOREIGN KEY `contracts_currentPhaseId_fkey`;
22
+ ALTER TABLE `contracts` DROP FOREIGN KEY `contracts_transferredFromId_fkey`;
23
+
24
+ -- contract_phases foreign keys
25
+ ALTER TABLE `contract_phases` DROP FOREIGN KEY `contract_phases_contractId_fkey`;
26
+
27
+ -- contract_events foreign keys
28
+ ALTER TABLE `contract_events` DROP FOREIGN KEY `contract_events_contractId_fkey`;
29
+
30
+ -- contract_payments foreign keys
31
+ ALTER TABLE `contract_payments` DROP FOREIGN KEY `contract_payments_contractId_fkey`;
32
+ ALTER TABLE `contract_payments` DROP FOREIGN KEY `contract_payments_phaseId_fkey`;
33
+ ALTER TABLE `contract_payments` DROP FOREIGN KEY `contract_payments_installmentId_fkey`;
34
+ ALTER TABLE `contract_payments` DROP FOREIGN KEY `contract_payments_payerId_fkey`;
35
+
36
+ -- contract_documents foreign keys
37
+ ALTER TABLE `contract_documents` DROP FOREIGN KEY `contract_documents_contractId_fkey`;
38
+ ALTER TABLE `contract_documents` DROP FOREIGN KEY `contract_documents_uploadedById_fkey`;
39
+
40
+ -- contract_refunds foreign keys
41
+ ALTER TABLE `contract_refunds` DROP FOREIGN KEY `contract_refunds_tenantId_fkey`;
42
+ ALTER TABLE `contract_refunds` DROP FOREIGN KEY `contract_refunds_contractId_fkey`;
43
+ ALTER TABLE `contract_refunds` DROP FOREIGN KEY `contract_refunds_requestedById_fkey`;
44
+ ALTER TABLE `contract_refunds` DROP FOREIGN KEY `contract_refunds_approvedById_fkey`;
45
+ ALTER TABLE `contract_refunds` DROP FOREIGN KEY `contract_refunds_processedById_fkey`;
46
+
47
+ -- contract_terminations foreign keys
48
+ ALTER TABLE `contract_terminations` DROP FOREIGN KEY `contract_terminations_contractId_fkey`;
49
+ ALTER TABLE `contract_terminations` DROP FOREIGN KEY `contract_terminations_tenantId_fkey`;
50
+ ALTER TABLE `contract_terminations` DROP FOREIGN KEY `contract_terminations_initiatorId_fkey`;
51
+ ALTER TABLE `contract_terminations` DROP FOREIGN KEY `contract_terminations_reviewedBy_fkey`;
52
+
53
+ -- contract_installments foreign keys
54
+ ALTER TABLE `contract_installments` DROP FOREIGN KEY `contract_installments_paymentPhaseId_fkey`;
55
+
56
+ -- other tables referencing contracts
57
+ ALTER TABLE `offer_letters` DROP FOREIGN KEY `offer_letters_contractId_fkey`;
58
+ ALTER TABLE `payment_method_change_requests` DROP FOREIGN KEY `payment_method_change_requests_contractId_fkey`;
59
+ ALTER TABLE `property_transfer_requests` DROP FOREIGN KEY `property_transfer_requests_sourceContractId_fkey`;
60
+ ALTER TABLE `property_transfer_requests` DROP FOREIGN KEY `property_transfer_requests_targetContractId_fkey`;
61
+
62
+ -- questionnaire_phases, documentation_phases, payment_phases reference contract_phases
63
+ ALTER TABLE `questionnaire_phases` DROP FOREIGN KEY `questionnaire_phases_phaseId_fkey`;
64
+ ALTER TABLE `documentation_phases` DROP FOREIGN KEY `documentation_phases_phaseId_fkey`;
65
+ ALTER TABLE `payment_phases` DROP FOREIGN KEY `payment_phases_phaseId_fkey`;
66
+
67
+ -- Step 4: Rename tables
68
+ RENAME TABLE `contracts` TO `applications`;
69
+ RENAME TABLE `contract_phases` TO `application_phases`;
70
+ RENAME TABLE `contract_events` TO `application_events`;
71
+ RENAME TABLE `contract_payments` TO `application_payments`;
72
+ RENAME TABLE `contract_documents` TO `application_documents`;
73
+ RENAME TABLE `contract_refunds` TO `application_refunds`;
74
+ RENAME TABLE `contract_terminations` TO `application_terminations`;
75
+ RENAME TABLE `contract_installments` TO `payment_installments`;
76
+
77
+ -- Step 5: Rename columns in applications table
78
+ ALTER TABLE `applications` CHANGE `contractNumber` `applicationNumber` VARCHAR(191) NOT NULL;
79
+ ALTER TABLE `applications` CHANGE `contractType` `applicationType` VARCHAR(191) NOT NULL;
80
+
81
+ -- Step 6: Rename columns in related tables (contractId -> applicationId)
82
+ ALTER TABLE `application_phases` CHANGE `contractId` `applicationId` VARCHAR(191) NOT NULL;
83
+ ALTER TABLE `application_events` CHANGE `contractId` `applicationId` VARCHAR(191) NOT NULL;
84
+ ALTER TABLE `application_payments` CHANGE `contractId` `applicationId` VARCHAR(191) NOT NULL;
85
+ ALTER TABLE `application_documents` CHANGE `contractId` `applicationId` VARCHAR(191) NOT NULL;
86
+ ALTER TABLE `application_refunds` CHANGE `contractId` `applicationId` VARCHAR(191) NOT NULL;
87
+ ALTER TABLE `application_terminations` CHANGE `contractId` `applicationId` VARCHAR(191) NOT NULL;
88
+
89
+ -- Rename columns in other tables that reference contracts
90
+ ALTER TABLE `offer_letters` CHANGE `contractId` `applicationId` VARCHAR(191) NOT NULL;
91
+ ALTER TABLE `payment_method_change_requests` CHANGE `contractId` `applicationId` VARCHAR(191) NOT NULL;
92
+ ALTER TABLE `property_transfer_requests` CHANGE `sourceContractId` `sourceApplicationId` VARCHAR(191) NOT NULL;
93
+ ALTER TABLE `property_transfer_requests` CHANGE `targetContractId` `targetApplicationId` VARCHAR(191) NULL;
94
+
95
+ -- Step 7: Update enum for application_events.eventType
96
+ -- First add new values, then update, then remove old values
97
+ ALTER TABLE `application_events` MODIFY `eventType` ENUM(
98
+ 'CONTRACT_CREATED', 'CONTRACT_STATE_CHANGED',
99
+ 'APPLICATION_CREATED', 'APPLICATION_STATE_CHANGED',
100
+ 'PHASE_ACTIVATED', 'PHASE_COMPLETED', 'STEP_COMPLETED', 'STEP_REJECTED',
101
+ 'DOCUMENT_SUBMITTED', 'DOCUMENT_APPROVED', 'DOCUMENT_REJECTED',
102
+ 'PAYMENT_INITIATED', 'PAYMENT_COMPLETED', 'PAYMENT_FAILED', 'INSTALLMENTS_GENERATED',
103
+ 'CONTRACT_SIGNED', 'CONTRACT_TERMINATED', 'CONTRACT_TRANSFERRED',
104
+ 'APPLICATION_SIGNED', 'APPLICATION_TERMINATED', 'APPLICATION_TRANSFERRED',
105
+ 'UNDERWRITING_COMPLETED', 'OFFER_LETTER_GENERATED'
106
+ ) NOT NULL;
107
+
108
+ UPDATE `application_events` SET `eventType` = 'APPLICATION_CREATED' WHERE `eventType` = 'CONTRACT_CREATED';
109
+ UPDATE `application_events` SET `eventType` = 'APPLICATION_STATE_CHANGED' WHERE `eventType` = 'CONTRACT_STATE_CHANGED';
110
+ UPDATE `application_events` SET `eventType` = 'APPLICATION_SIGNED' WHERE `eventType` = 'CONTRACT_SIGNED';
111
+ UPDATE `application_events` SET `eventType` = 'APPLICATION_TERMINATED' WHERE `eventType` = 'CONTRACT_TERMINATED';
112
+ UPDATE `application_events` SET `eventType` = 'APPLICATION_TRANSFERRED' WHERE `eventType` = 'CONTRACT_TRANSFERRED';
113
+
114
+ ALTER TABLE `application_events` MODIFY `eventType` ENUM(
115
+ 'APPLICATION_CREATED', 'APPLICATION_STATE_CHANGED',
116
+ 'PHASE_ACTIVATED', 'PHASE_COMPLETED', 'STEP_COMPLETED', 'STEP_REJECTED',
117
+ 'DOCUMENT_SUBMITTED', 'DOCUMENT_APPROVED', 'DOCUMENT_REJECTED',
118
+ 'PAYMENT_INITIATED', 'PAYMENT_COMPLETED', 'PAYMENT_FAILED', 'INSTALLMENTS_GENERATED',
119
+ 'APPLICATION_SIGNED', 'APPLICATION_TERMINATED', 'APPLICATION_TRANSFERRED',
120
+ 'UNDERWRITING_COMPLETED', 'OFFER_LETTER_GENERATED'
121
+ ) NOT NULL;
122
+
123
+ -- Step 8: Drop old indexes
124
+ DROP INDEX `contracts_contractNumber_key` ON `applications`;
125
+ DROP INDEX `contracts_transferredFromId_key` ON `applications`;
126
+ DROP INDEX `contracts_tenantId_idx` ON `applications`;
127
+ DROP INDEX `contracts_propertyUnitId_idx` ON `applications`;
128
+ DROP INDEX `contracts_buyerId_idx` ON `applications`;
129
+ DROP INDEX `contracts_sellerId_idx` ON `applications`;
130
+ DROP INDEX `contracts_paymentMethodId_idx` ON `applications`;
131
+ DROP INDEX `contracts_status_idx` ON `applications`;
132
+ DROP INDEX `contracts_currentPhaseId_idx` ON `applications`;
133
+
134
+ DROP INDEX `contract_phases_contractId_idx` ON `application_phases`;
135
+ DROP INDEX `contract_phases_phaseCategory_idx` ON `application_phases`;
136
+ DROP INDEX `contract_phases_status_idx` ON `application_phases`;
137
+ DROP INDEX `contract_phases_order_idx` ON `application_phases`;
138
+
139
+ DROP INDEX `contract_events_contractId_idx` ON `application_events`;
140
+ DROP INDEX `contract_events_eventType_idx` ON `application_events`;
141
+ DROP INDEX `contract_events_eventGroup_idx` ON `application_events`;
142
+ DROP INDEX `contract_events_occurredAt_idx` ON `application_events`;
143
+
144
+ DROP INDEX `contract_payments_contractId_idx` ON `application_payments`;
145
+ DROP INDEX `contract_payments_phaseId_idx` ON `application_payments`;
146
+ DROP INDEX `contract_payments_installmentId_idx` ON `application_payments`;
147
+ DROP INDEX `contract_payments_payerId_idx` ON `application_payments`;
148
+ DROP INDEX `contract_payments_status_idx` ON `application_payments`;
149
+ DROP INDEX `contract_payments_reference_key` ON `application_payments`;
150
+ DROP INDEX `contract_payments_reference_idx` ON `application_payments`;
151
+
152
+ DROP INDEX `contract_documents_contractId_idx` ON `application_documents`;
153
+ DROP INDEX `contract_documents_phaseId_idx` ON `application_documents`;
154
+ DROP INDEX `contract_documents_stepId_idx` ON `application_documents`;
155
+ DROP INDEX `contract_documents_type_idx` ON `application_documents`;
156
+ DROP INDEX `contract_documents_status_idx` ON `application_documents`;
157
+
158
+ DROP INDEX `contract_refunds_contractId_idx` ON `application_refunds`;
159
+ DROP INDEX `contract_refunds_status_idx` ON `application_refunds`;
160
+ DROP INDEX `contract_refunds_tenantId_idx` ON `application_refunds`;
161
+ DROP INDEX `contract_refunds_requestedById_idx` ON `application_refunds`;
162
+
163
+ DROP INDEX `contract_terminations_contractId_idx` ON `application_terminations`;
164
+ DROP INDEX `contract_terminations_tenantId_idx` ON `application_terminations`;
165
+ DROP INDEX `contract_terminations_status_idx` ON `application_terminations`;
166
+ DROP INDEX `contract_terminations_type_idx` ON `application_terminations`;
167
+ DROP INDEX `contract_terminations_initiatorId_idx` ON `application_terminations`;
168
+ DROP INDEX `contract_terminations_requestedAt_idx` ON `application_terminations`;
169
+ DROP INDEX `contract_terminations_requestNumber_key` ON `application_terminations`;
170
+ DROP INDEX `contract_terminations_idempotencyKey_key` ON `application_terminations`;
171
+
172
+ DROP INDEX `contract_installments_paymentPhaseId_idx` ON `payment_installments`;
173
+ DROP INDEX `contract_installments_dueDate_idx` ON `payment_installments`;
174
+ DROP INDEX `contract_installments_status_idx` ON `payment_installments`;
175
+
176
+ DROP INDEX `offer_letters_contractId_idx` ON `offer_letters`;
177
+ DROP INDEX `payment_method_change_requests_contractId_idx` ON `payment_method_change_requests`;
178
+ DROP INDEX `property_transfer_requests_sourceContractId_idx` ON `property_transfer_requests`;
179
+ DROP INDEX `property_transfer_requests_targetContractId_fkey` ON `property_transfer_requests`;
180
+
181
+ -- Step 9: Create new indexes with new names
182
+ CREATE UNIQUE INDEX `applications_applicationNumber_key` ON `applications`(`applicationNumber`);
183
+ CREATE UNIQUE INDEX `applications_transferredFromId_key` ON `applications`(`transferredFromId`);
184
+ CREATE INDEX `applications_tenantId_idx` ON `applications`(`tenantId`);
185
+ CREATE INDEX `applications_propertyUnitId_idx` ON `applications`(`propertyUnitId`);
186
+ CREATE INDEX `applications_buyerId_idx` ON `applications`(`buyerId`);
187
+ CREATE INDEX `applications_sellerId_idx` ON `applications`(`sellerId`);
188
+ CREATE INDEX `applications_paymentMethodId_idx` ON `applications`(`paymentMethodId`);
189
+ CREATE INDEX `applications_status_idx` ON `applications`(`status`);
190
+ CREATE INDEX `applications_currentPhaseId_idx` ON `applications`(`currentPhaseId`);
191
+
192
+ CREATE INDEX `application_phases_applicationId_idx` ON `application_phases`(`applicationId`);
193
+ CREATE INDEX `application_phases_phaseCategory_idx` ON `application_phases`(`phaseCategory`);
194
+ CREATE INDEX `application_phases_status_idx` ON `application_phases`(`status`);
195
+ CREATE INDEX `application_phases_order_idx` ON `application_phases`(`order`);
196
+
197
+ CREATE INDEX `application_events_applicationId_idx` ON `application_events`(`applicationId`);
198
+ CREATE INDEX `application_events_eventType_idx` ON `application_events`(`eventType`);
199
+ CREATE INDEX `application_events_eventGroup_idx` ON `application_events`(`eventGroup`);
200
+ CREATE INDEX `application_events_occurredAt_idx` ON `application_events`(`occurredAt`);
201
+
202
+ CREATE INDEX `application_payments_applicationId_idx` ON `application_payments`(`applicationId`);
203
+ CREATE INDEX `application_payments_phaseId_idx` ON `application_payments`(`phaseId`);
204
+ CREATE INDEX `application_payments_installmentId_idx` ON `application_payments`(`installmentId`);
205
+ CREATE INDEX `application_payments_payerId_idx` ON `application_payments`(`payerId`);
206
+ CREATE INDEX `application_payments_status_idx` ON `application_payments`(`status`);
207
+ CREATE UNIQUE INDEX `application_payments_reference_key` ON `application_payments`(`reference`);
208
+ CREATE INDEX `application_payments_reference_idx` ON `application_payments`(`reference`);
209
+
210
+ CREATE INDEX `application_documents_applicationId_idx` ON `application_documents`(`applicationId`);
211
+ CREATE INDEX `application_documents_phaseId_idx` ON `application_documents`(`phaseId`);
212
+ CREATE INDEX `application_documents_stepId_idx` ON `application_documents`(`stepId`);
213
+ CREATE INDEX `application_documents_type_idx` ON `application_documents`(`type`);
214
+ CREATE INDEX `application_documents_status_idx` ON `application_documents`(`status`);
215
+
216
+ CREATE INDEX `application_refunds_applicationId_idx` ON `application_refunds`(`applicationId`);
217
+ CREATE INDEX `application_refunds_status_idx` ON `application_refunds`(`status`);
218
+ CREATE INDEX `application_refunds_tenantId_idx` ON `application_refunds`(`tenantId`);
219
+ CREATE INDEX `application_refunds_requestedById_idx` ON `application_refunds`(`requestedById`);
220
+
221
+ CREATE INDEX `application_terminations_applicationId_idx` ON `application_terminations`(`applicationId`);
222
+ CREATE INDEX `application_terminations_tenantId_idx` ON `application_terminations`(`tenantId`);
223
+ CREATE INDEX `application_terminations_status_idx` ON `application_terminations`(`status`);
224
+ CREATE INDEX `application_terminations_type_idx` ON `application_terminations`(`type`);
225
+ CREATE INDEX `application_terminations_initiatorId_idx` ON `application_terminations`(`initiatorId`);
226
+ CREATE INDEX `application_terminations_requestedAt_idx` ON `application_terminations`(`requestedAt`);
227
+ CREATE UNIQUE INDEX `application_terminations_requestNumber_key` ON `application_terminations`(`requestNumber`);
228
+ CREATE UNIQUE INDEX `application_terminations_idempotencyKey_key` ON `application_terminations`(`idempotencyKey`);
229
+
230
+ CREATE INDEX `payment_installments_paymentPhaseId_idx` ON `payment_installments`(`paymentPhaseId`);
231
+ CREATE INDEX `payment_installments_dueDate_idx` ON `payment_installments`(`dueDate`);
232
+ CREATE INDEX `payment_installments_status_idx` ON `payment_installments`(`status`);
233
+
234
+ CREATE INDEX `offer_letters_applicationId_idx` ON `offer_letters`(`applicationId`);
235
+ CREATE INDEX `payment_method_change_requests_applicationId_idx` ON `payment_method_change_requests`(`applicationId`);
236
+ CREATE INDEX `property_transfer_requests_sourceApplicationId_idx` ON `property_transfer_requests`(`sourceApplicationId`);
237
+
238
+ -- Step 10: Recreate foreign keys with new names
239
+ -- applications table
240
+ ALTER TABLE `applications` ADD CONSTRAINT `applications_tenantId_fkey` FOREIGN KEY (`tenantId`) REFERENCES `tenants`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
241
+ ALTER TABLE `applications` ADD CONSTRAINT `applications_propertyUnitId_fkey` FOREIGN KEY (`propertyUnitId`) REFERENCES `property_units`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
242
+ ALTER TABLE `applications` ADD CONSTRAINT `applications_buyerId_fkey` FOREIGN KEY (`buyerId`) REFERENCES `users`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
243
+ ALTER TABLE `applications` ADD CONSTRAINT `applications_sellerId_fkey` FOREIGN KEY (`sellerId`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
244
+ ALTER TABLE `applications` ADD CONSTRAINT `applications_paymentMethodId_fkey` FOREIGN KEY (`paymentMethodId`) REFERENCES `property_payment_methods`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
245
+ ALTER TABLE `applications` ADD CONSTRAINT `applications_currentPhaseId_fkey` FOREIGN KEY (`currentPhaseId`) REFERENCES `application_phases`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
246
+ ALTER TABLE `applications` ADD CONSTRAINT `applications_transferredFromId_fkey` FOREIGN KEY (`transferredFromId`) REFERENCES `applications`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
247
+
248
+ -- application_phases
249
+ ALTER TABLE `application_phases` ADD CONSTRAINT `application_phases_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
250
+
251
+ -- questionnaire_phases, documentation_phases, payment_phases
252
+ ALTER TABLE `questionnaire_phases` ADD CONSTRAINT `questionnaire_phases_phaseId_fkey` FOREIGN KEY (`phaseId`) REFERENCES `application_phases`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
253
+ ALTER TABLE `documentation_phases` ADD CONSTRAINT `documentation_phases_phaseId_fkey` FOREIGN KEY (`phaseId`) REFERENCES `application_phases`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
254
+ ALTER TABLE `payment_phases` ADD CONSTRAINT `payment_phases_phaseId_fkey` FOREIGN KEY (`phaseId`) REFERENCES `application_phases`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
255
+
256
+ -- application_events
257
+ ALTER TABLE `application_events` ADD CONSTRAINT `application_events_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
258
+
259
+ -- payment_installments
260
+ ALTER TABLE `payment_installments` ADD CONSTRAINT `payment_installments_paymentPhaseId_fkey` FOREIGN KEY (`paymentPhaseId`) REFERENCES `payment_phases`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
261
+
262
+ -- application_payments
263
+ ALTER TABLE `application_payments` ADD CONSTRAINT `application_payments_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
264
+ ALTER TABLE `application_payments` ADD CONSTRAINT `application_payments_phaseId_fkey` FOREIGN KEY (`phaseId`) REFERENCES `application_phases`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
265
+ ALTER TABLE `application_payments` ADD CONSTRAINT `application_payments_installmentId_fkey` FOREIGN KEY (`installmentId`) REFERENCES `payment_installments`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
266
+ ALTER TABLE `application_payments` ADD CONSTRAINT `application_payments_payerId_fkey` FOREIGN KEY (`payerId`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
267
+
268
+ -- application_documents
269
+ ALTER TABLE `application_documents` ADD CONSTRAINT `application_documents_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
270
+ ALTER TABLE `application_documents` ADD CONSTRAINT `application_documents_uploadedById_fkey` FOREIGN KEY (`uploadedById`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
271
+
272
+ -- application_refunds
273
+ ALTER TABLE `application_refunds` ADD CONSTRAINT `application_refunds_tenantId_fkey` FOREIGN KEY (`tenantId`) REFERENCES `tenants`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
274
+ ALTER TABLE `application_refunds` ADD CONSTRAINT `application_refunds_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
275
+ ALTER TABLE `application_refunds` ADD CONSTRAINT `application_refunds_requestedById_fkey` FOREIGN KEY (`requestedById`) REFERENCES `users`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
276
+ ALTER TABLE `application_refunds` ADD CONSTRAINT `application_refunds_approvedById_fkey` FOREIGN KEY (`approvedById`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
277
+ ALTER TABLE `application_refunds` ADD CONSTRAINT `application_refunds_processedById_fkey` FOREIGN KEY (`processedById`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
278
+
279
+ -- application_terminations
280
+ ALTER TABLE `application_terminations` ADD CONSTRAINT `application_terminations_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
281
+ ALTER TABLE `application_terminations` ADD CONSTRAINT `application_terminations_tenantId_fkey` FOREIGN KEY (`tenantId`) REFERENCES `tenants`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
282
+ ALTER TABLE `application_terminations` ADD CONSTRAINT `application_terminations_initiatorId_fkey` FOREIGN KEY (`initiatorId`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
283
+ ALTER TABLE `application_terminations` ADD CONSTRAINT `application_terminations_reviewedBy_fkey` FOREIGN KEY (`reviewedBy`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
284
+
285
+ -- offer_letters
286
+ ALTER TABLE `offer_letters` ADD CONSTRAINT `offer_letters_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
287
+
288
+ -- payment_method_change_requests
289
+ ALTER TABLE `payment_method_change_requests` ADD CONSTRAINT `payment_method_change_requests_applicationId_fkey` FOREIGN KEY (`applicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
290
+
291
+ -- property_transfer_requests
292
+ ALTER TABLE `property_transfer_requests` ADD CONSTRAINT `property_transfer_requests_sourceApplicationId_fkey` FOREIGN KEY (`sourceApplicationId`) REFERENCES `applications`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
293
+ ALTER TABLE `property_transfer_requests` ADD CONSTRAINT `property_transfer_requests_targetApplicationId_fkey` FOREIGN KEY (`targetApplicationId`) REFERENCES `applications`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
@@ -0,0 +1,14 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to drop the column `contractSnapshot` on the `application_terminations` table. All the data in the column will be lost.
5
+ - You are about to drop the column `totalContractAmount` on the `application_terminations` table. All the data in the column will be lost.
6
+ - Added the required column `applicationSnapshot` to the `application_terminations` table without a default value. This is not possible if the table is not empty.
7
+ - Added the required column `totalApplicationAmount` to the `application_terminations` table without a default value. This is not possible if the table is not empty.
8
+
9
+ */
10
+ -- AlterTable
11
+ ALTER TABLE `application_terminations` DROP COLUMN `contractSnapshot`,
12
+ DROP COLUMN `totalContractAmount`,
13
+ ADD COLUMN `applicationSnapshot` JSON NOT NULL,
14
+ ADD COLUMN `totalApplicationAmount` DOUBLE NOT NULL;