@javalabs/prisma-client 1.0.0
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/README.md +220 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/prisma-factory.service.d.ts +9 -0
- package/dist/prisma-factory.service.js +47 -0
- package/dist/prisma-factory.service.js.map +1 -0
- package/dist/prisma.module.d.ts +2 -0
- package/dist/prisma.module.js +23 -0
- package/dist/prisma.module.js.map +1 -0
- package/dist/prisma.service.d.ts +6 -0
- package/dist/prisma.service.js +27 -0
- package/dist/prisma.service.js.map +1 -0
- package/dist/scripts/create-tenant-schemas.d.ts +1 -0
- package/dist/scripts/create-tenant-schemas.js +117 -0
- package/dist/scripts/create-tenant-schemas.js.map +1 -0
- package/dist/scripts/data-migration/batch-migrator.d.ts +25 -0
- package/dist/scripts/data-migration/batch-migrator.js +333 -0
- package/dist/scripts/data-migration/batch-migrator.js.map +1 -0
- package/dist/scripts/data-migration/data-transformer.d.ts +17 -0
- package/dist/scripts/data-migration/data-transformer.js +242 -0
- package/dist/scripts/data-migration/data-transformer.js.map +1 -0
- package/dist/scripts/data-migration/db-connector.d.ts +7 -0
- package/dist/scripts/data-migration/db-connector.js +58 -0
- package/dist/scripts/data-migration/db-connector.js.map +1 -0
- package/dist/scripts/data-migration/dependency-manager.d.ts +9 -0
- package/dist/scripts/data-migration/dependency-manager.js +86 -0
- package/dist/scripts/data-migration/dependency-manager.js.map +1 -0
- package/dist/scripts/data-migration/dependency-resolver.d.ts +18 -0
- package/dist/scripts/data-migration/dependency-resolver.js +251 -0
- package/dist/scripts/data-migration/dependency-resolver.js.map +1 -0
- package/dist/scripts/data-migration/entity-discovery.d.ts +11 -0
- package/dist/scripts/data-migration/entity-discovery.js +152 -0
- package/dist/scripts/data-migration/entity-discovery.js.map +1 -0
- package/dist/scripts/data-migration/foreign-key-manager.d.ts +17 -0
- package/dist/scripts/data-migration/foreign-key-manager.js +70 -0
- package/dist/scripts/data-migration/foreign-key-manager.js.map +1 -0
- package/dist/scripts/data-migration/migration-phases.d.ts +5 -0
- package/dist/scripts/data-migration/migration-phases.js +55 -0
- package/dist/scripts/data-migration/migration-phases.js.map +1 -0
- package/dist/scripts/data-migration/migration-tool.d.ts +29 -0
- package/dist/scripts/data-migration/migration-tool.js +250 -0
- package/dist/scripts/data-migration/migration-tool.js.map +1 -0
- package/dist/scripts/data-migration/phase-generator.d.ts +15 -0
- package/dist/scripts/data-migration/phase-generator.js +187 -0
- package/dist/scripts/data-migration/phase-generator.js.map +1 -0
- package/dist/scripts/data-migration/schema-utils.d.ts +18 -0
- package/dist/scripts/data-migration/schema-utils.js +164 -0
- package/dist/scripts/data-migration/schema-utils.js.map +1 -0
- package/dist/scripts/data-migration/tenant-migrator.d.ts +15 -0
- package/dist/scripts/data-migration/tenant-migrator.js +110 -0
- package/dist/scripts/data-migration/tenant-migrator.js.map +1 -0
- package/dist/scripts/data-migration/typecast-manager.d.ts +5 -0
- package/dist/scripts/data-migration/typecast-manager.js +35 -0
- package/dist/scripts/data-migration/typecast-manager.js.map +1 -0
- package/dist/scripts/data-migration/types.d.ts +34 -0
- package/dist/scripts/data-migration/types.js +3 -0
- package/dist/scripts/data-migration/types.js.map +1 -0
- package/dist/scripts/data-migration.d.ts +22 -0
- package/dist/scripts/data-migration.js +593 -0
- package/dist/scripts/data-migration.js.map +1 -0
- package/dist/scripts/drop-database.d.ts +10 -0
- package/dist/scripts/drop-database.js +81 -0
- package/dist/scripts/drop-database.js.map +1 -0
- package/dist/scripts/error-handler.d.ts +12 -0
- package/dist/scripts/error-handler.js +82 -0
- package/dist/scripts/error-handler.js.map +1 -0
- package/dist/scripts/fix-data-types.d.ts +10 -0
- package/dist/scripts/fix-data-types.js +185 -0
- package/dist/scripts/fix-data-types.js.map +1 -0
- package/dist/scripts/fix-enum-values.d.ts +17 -0
- package/dist/scripts/fix-enum-values.js +234 -0
- package/dist/scripts/fix-enum-values.js.map +1 -0
- package/dist/scripts/fix-schema-discrepancies.d.ts +21 -0
- package/dist/scripts/fix-schema-discrepancies.js +240 -0
- package/dist/scripts/fix-schema-discrepancies.js.map +1 -0
- package/dist/scripts/migrate-schema-structure.d.ts +1 -0
- package/dist/scripts/migrate-schema-structure.js +76 -0
- package/dist/scripts/migrate-schema-structure.js.map +1 -0
- package/dist/scripts/post-migration-validator.d.ts +21 -0
- package/dist/scripts/post-migration-validator.js +341 -0
- package/dist/scripts/post-migration-validator.js.map +1 -0
- package/dist/scripts/pre-migration-validator.d.ts +25 -0
- package/dist/scripts/pre-migration-validator.js +491 -0
- package/dist/scripts/pre-migration-validator.js.map +1 -0
- package/dist/scripts/reset-database.d.ts +17 -0
- package/dist/scripts/reset-database.js +202 -0
- package/dist/scripts/reset-database.js.map +1 -0
- package/dist/scripts/retry-failed-migrations.d.ts +14 -0
- package/dist/scripts/retry-failed-migrations.js +301 -0
- package/dist/scripts/retry-failed-migrations.js.map +1 -0
- package/dist/scripts/run-migration.d.ts +1 -0
- package/dist/scripts/run-migration.js +525 -0
- package/dist/scripts/run-migration.js.map +1 -0
- package/dist/scripts/schema-sync.d.ts +1 -0
- package/dist/scripts/schema-sync.js +85 -0
- package/dist/scripts/schema-sync.js.map +1 -0
- package/dist/scripts/sync-enum-types.d.ts +13 -0
- package/dist/scripts/sync-enum-types.js +139 -0
- package/dist/scripts/sync-enum-types.js.map +1 -0
- package/dist/scripts/sync-enum-values.d.ts +20 -0
- package/dist/scripts/sync-enum-values.js +336 -0
- package/dist/scripts/sync-enum-values.js.map +1 -0
- package/dist/scripts/truncate-database.d.ts +10 -0
- package/dist/scripts/truncate-database.js +100 -0
- package/dist/scripts/truncate-database.js.map +1 -0
- package/dist/scripts/verify-migration-setup.d.ts +11 -0
- package/dist/scripts/verify-migration-setup.js +120 -0
- package/dist/scripts/verify-migration-setup.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/migration-config-public.json +95 -0
- package/migration-config.json +95 -0
- package/package.json +33 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +360 -0
- package/src/index.ts +23 -0
- package/src/prisma-factory.service.ts +41 -0
- package/src/prisma.module.ts +10 -0
- package/src/prisma.service.ts +17 -0
- package/src/scripts/create-tenant-schemas.ts +146 -0
- package/src/scripts/data-migration/batch-migrator.ts +569 -0
- package/src/scripts/data-migration/data-transformer.ts +377 -0
- package/src/scripts/data-migration/db-connector.ts +67 -0
- package/src/scripts/data-migration/dependency-resolver.ts +319 -0
- package/src/scripts/data-migration/entity-discovery.ts +197 -0
- package/src/scripts/data-migration/foreign-key-manager.ts +95 -0
- package/src/scripts/data-migration/migration-tool.ts +357 -0
- package/src/scripts/data-migration/schema-utils.ts +186 -0
- package/src/scripts/data-migration/tenant-migrator.ts +194 -0
- package/src/scripts/data-migration/typecast-manager.ts +38 -0
- package/src/scripts/data-migration/types.ts +40 -0
- package/src/scripts/drop-database.ts +105 -0
- package/src/scripts/dump-source-db.sh +62 -0
- package/src/scripts/dumps/source_dump_20250413_112626.sql +1527 -0
- package/src/scripts/error-handler.ts +118 -0
- package/src/scripts/fix-data-types.ts +242 -0
- package/src/scripts/fix-enum-values.ts +357 -0
- package/src/scripts/fix-schema-discrepancies.ts +318 -0
- package/src/scripts/migrate-schema-structure.ts +90 -0
- package/src/scripts/post-migration-validator.ts +427 -0
- package/src/scripts/pre-migration-validator.ts +611 -0
- package/src/scripts/reset-database.ts +264 -0
- package/src/scripts/retry-failed-migrations.ts +416 -0
- package/src/scripts/run-migration.ts +691 -0
- package/src/scripts/schema-sync.ts +129 -0
- package/src/scripts/sync-enum-types.ts +171 -0
- package/src/scripts/sync-enum-values.ts +563 -0
- package/src/scripts/truncate-database.ts +124 -0
- package/src/scripts/verify-migration-setup.ts +136 -0
- package/tsconfig.json +18 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix-enum-values.js","sourceRoot":"","sources":["../../src/scripts/fix-enum-values.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare class SchemaDiscrepancyFixer {
|
|
2
|
+
private readonly sourceUrl;
|
|
3
|
+
private readonly targetUrl;
|
|
4
|
+
private readonly reportPath?;
|
|
5
|
+
private readonly logger;
|
|
6
|
+
private readonly sourcePool;
|
|
7
|
+
private readonly targetPool;
|
|
8
|
+
private readonly columnTypeCache;
|
|
9
|
+
constructor(sourceUrl?: string, targetUrl?: string, reportPath?: string);
|
|
10
|
+
fixDiscrepancies(): Promise<void>;
|
|
11
|
+
private findLatestReport;
|
|
12
|
+
private groupByTable;
|
|
13
|
+
private fixTableColumns;
|
|
14
|
+
private getTargetSchemas;
|
|
15
|
+
private cacheSourceColumnTypes;
|
|
16
|
+
private checkTableExists;
|
|
17
|
+
private checkColumnExists;
|
|
18
|
+
private addColumn;
|
|
19
|
+
private addUniqueConstraint;
|
|
20
|
+
private cleanup;
|
|
21
|
+
}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SchemaDiscrepancyFixer = void 0;
|
|
4
|
+
const fs = require("fs");
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const pg = require("pg");
|
|
7
|
+
const common_1 = require("@nestjs/common");
|
|
8
|
+
const dotenv = require("dotenv");
|
|
9
|
+
dotenv.config();
|
|
10
|
+
class SchemaDiscrepancyFixer {
|
|
11
|
+
constructor(sourceUrl = process.env.SOURCE_DATABASE_URL, targetUrl = process.env.DATABASE_URL, reportPath) {
|
|
12
|
+
this.sourceUrl = sourceUrl;
|
|
13
|
+
this.targetUrl = targetUrl;
|
|
14
|
+
this.reportPath = reportPath;
|
|
15
|
+
this.logger = new common_1.Logger('SchemaDiscrepancyFixer');
|
|
16
|
+
this.columnTypeCache = {};
|
|
17
|
+
if (!this.sourceUrl) {
|
|
18
|
+
throw new Error('SOURCE_DATABASE_URL environment variable is required');
|
|
19
|
+
}
|
|
20
|
+
if (!this.targetUrl) {
|
|
21
|
+
throw new Error('DATABASE_URL environment variable is required');
|
|
22
|
+
}
|
|
23
|
+
this.sourcePool = new pg.Pool({
|
|
24
|
+
connectionString: this.sourceUrl,
|
|
25
|
+
});
|
|
26
|
+
this.targetPool = new pg.Pool({
|
|
27
|
+
connectionString: this.targetUrl,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
async fixDiscrepancies() {
|
|
31
|
+
try {
|
|
32
|
+
const reportFile = this.reportPath || await this.findLatestReport();
|
|
33
|
+
if (!reportFile) {
|
|
34
|
+
this.logger.error('No pre-migration report found');
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
this.logger.log(`Using pre-migration report: ${reportFile}`);
|
|
38
|
+
const reportContent = fs.readFileSync(reportFile, 'utf8');
|
|
39
|
+
const report = JSON.parse(reportContent);
|
|
40
|
+
const columnMismatches = report.issues.filter(issue => issue.type === 'COLUMN_MISMATCH');
|
|
41
|
+
if (columnMismatches.length === 0) {
|
|
42
|
+
this.logger.log('No column mismatches to fix');
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
this.logger.log(`Found ${columnMismatches.length} column mismatches to fix`);
|
|
46
|
+
const tableGroups = this.groupByTable(columnMismatches);
|
|
47
|
+
for (const [table, columns] of Object.entries(tableGroups)) {
|
|
48
|
+
await this.fixTableColumns(table, columns);
|
|
49
|
+
}
|
|
50
|
+
this.logger.log('Schema discrepancies fixed successfully');
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
this.logger.error(`Error fixing schema discrepancies: ${error.message}`);
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
await this.cleanup();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async findLatestReport() {
|
|
61
|
+
const logsDir = path.join(process.cwd(), 'migration-logs');
|
|
62
|
+
if (!fs.existsSync(logsDir)) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
const files = fs.readdirSync(logsDir);
|
|
66
|
+
const reportFiles = files.filter(file => file.startsWith('pre-migration-report-'));
|
|
67
|
+
if (reportFiles.length === 0) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
reportFiles.sort().reverse();
|
|
71
|
+
return path.join(logsDir, reportFiles[0]);
|
|
72
|
+
}
|
|
73
|
+
groupByTable(mismatches) {
|
|
74
|
+
return mismatches.reduce((groups, mismatch) => {
|
|
75
|
+
const table = mismatch.details.table;
|
|
76
|
+
if (!groups[table]) {
|
|
77
|
+
groups[table] = [];
|
|
78
|
+
}
|
|
79
|
+
groups[table].push(mismatch);
|
|
80
|
+
return groups;
|
|
81
|
+
}, {});
|
|
82
|
+
}
|
|
83
|
+
async fixTableColumns(table, columns) {
|
|
84
|
+
var _a;
|
|
85
|
+
try {
|
|
86
|
+
this.logger.log(`Fixing columns for table "${table}"`);
|
|
87
|
+
const schemas = await this.getTargetSchemas();
|
|
88
|
+
await this.cacheSourceColumnTypes(table, columns.map(c => c.details.column));
|
|
89
|
+
for (const schema of schemas) {
|
|
90
|
+
this.logger.log(`Processing schema "${schema}" for table "${table}"`);
|
|
91
|
+
const tableExists = await this.checkTableExists(schema, table);
|
|
92
|
+
if (!tableExists) {
|
|
93
|
+
this.logger.warn(`Table "${table}" does not exist in schema "${schema}". Skipping.`);
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
for (const column of columns) {
|
|
97
|
+
const columnName = column.details.column;
|
|
98
|
+
const columnType = (_a = this.columnTypeCache[table]) === null || _a === void 0 ? void 0 : _a[columnName];
|
|
99
|
+
if (!columnType) {
|
|
100
|
+
this.logger.warn(`Could not determine type for column "${columnName}" in table "${table}". Skipping.`);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const columnExists = await this.checkColumnExists(schema, table, columnName);
|
|
104
|
+
if (columnExists) {
|
|
105
|
+
this.logger.log(`Column "${columnName}" already exists in "${schema}"."${table}". Skipping.`);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
await this.addColumn(schema, table, columnName, columnType);
|
|
109
|
+
if (column.details.constraint_type === 'UNIQUE') {
|
|
110
|
+
await this.addUniqueConstraint(schema, table, columnName);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
this.logger.log(`Fixed columns for table "${table}" successfully`);
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
this.logger.error(`Error fixing columns for table "${table}": ${error.message}`);
|
|
118
|
+
throw error;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async getTargetSchemas() {
|
|
122
|
+
const query = `
|
|
123
|
+
SELECT schema_name
|
|
124
|
+
FROM information_schema.schemata
|
|
125
|
+
WHERE schema_name NOT IN ('information_schema', 'pg_catalog', 'pg_toast')
|
|
126
|
+
AND schema_name NOT LIKE 'pg_%'
|
|
127
|
+
`;
|
|
128
|
+
const result = await this.targetPool.query(query);
|
|
129
|
+
return result.rows.map(row => row.schema_name);
|
|
130
|
+
}
|
|
131
|
+
async cacheSourceColumnTypes(table, columns) {
|
|
132
|
+
if (!this.columnTypeCache[table]) {
|
|
133
|
+
this.columnTypeCache[table] = {};
|
|
134
|
+
}
|
|
135
|
+
const columnsStr = columns.map(c => `'${c}'`).join(',');
|
|
136
|
+
const query = `
|
|
137
|
+
SELECT column_name, data_type,
|
|
138
|
+
CASE
|
|
139
|
+
WHEN data_type = 'character varying' THEN data_type || '(' || character_maximum_length || ')'
|
|
140
|
+
WHEN data_type = 'numeric' THEN
|
|
141
|
+
CASE
|
|
142
|
+
WHEN numeric_precision IS NOT NULL AND numeric_scale IS NOT NULL
|
|
143
|
+
THEN data_type || '(' || numeric_precision || ',' || numeric_scale || ')'
|
|
144
|
+
ELSE data_type
|
|
145
|
+
END
|
|
146
|
+
ELSE data_type
|
|
147
|
+
END as full_data_type
|
|
148
|
+
FROM information_schema.columns
|
|
149
|
+
WHERE table_schema = 'public'
|
|
150
|
+
AND table_name = $1
|
|
151
|
+
AND column_name IN (${columnsStr})
|
|
152
|
+
`;
|
|
153
|
+
const result = await this.sourcePool.query(query, [table]);
|
|
154
|
+
for (const row of result.rows) {
|
|
155
|
+
this.columnTypeCache[table][row.column_name] = row.full_data_type;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
async checkTableExists(schema, table) {
|
|
159
|
+
const query = `
|
|
160
|
+
SELECT EXISTS (
|
|
161
|
+
SELECT FROM information_schema.tables
|
|
162
|
+
WHERE table_schema = $1
|
|
163
|
+
AND table_name = $2
|
|
164
|
+
);
|
|
165
|
+
`;
|
|
166
|
+
const result = await this.targetPool.query(query, [schema, table]);
|
|
167
|
+
return result.rows[0].exists;
|
|
168
|
+
}
|
|
169
|
+
async checkColumnExists(schema, table, column) {
|
|
170
|
+
const query = `
|
|
171
|
+
SELECT EXISTS (
|
|
172
|
+
SELECT FROM information_schema.columns
|
|
173
|
+
WHERE table_schema = $1
|
|
174
|
+
AND table_name = $2
|
|
175
|
+
AND column_name = $3
|
|
176
|
+
);
|
|
177
|
+
`;
|
|
178
|
+
const result = await this.targetPool.query(query, [schema, table, column]);
|
|
179
|
+
return result.rows[0].exists;
|
|
180
|
+
}
|
|
181
|
+
async addColumn(schema, table, column, type) {
|
|
182
|
+
try {
|
|
183
|
+
const query = `
|
|
184
|
+
ALTER TABLE "${schema}"."${table}"
|
|
185
|
+
ADD COLUMN IF NOT EXISTS "${column}" ${type};
|
|
186
|
+
`;
|
|
187
|
+
await this.targetPool.query(query);
|
|
188
|
+
this.logger.log(`Added column "${column}" to "${schema}"."${table}" with type "${type}"`);
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
this.logger.error(`Error adding column "${column}" to "${schema}"."${table}": ${error.message}`);
|
|
192
|
+
throw error;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
async addUniqueConstraint(schema, table, column) {
|
|
196
|
+
try {
|
|
197
|
+
const constraintName = `${table}_${column}_unique`;
|
|
198
|
+
const query = `
|
|
199
|
+
ALTER TABLE "${schema}"."${table}"
|
|
200
|
+
ADD CONSTRAINT "${constraintName}" UNIQUE ("${column}");
|
|
201
|
+
`;
|
|
202
|
+
await this.targetPool.query(query);
|
|
203
|
+
this.logger.log(`Added UNIQUE constraint on "${column}" to "${schema}"."${table}"`);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
if (error.message.includes('already exists')) {
|
|
207
|
+
this.logger.log(`UNIQUE constraint on "${column}" already exists for "${schema}"."${table}"`);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
this.logger.error(`Error adding UNIQUE constraint on "${column}" to "${schema}"."${table}": ${error.message}`);
|
|
211
|
+
throw error;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
async cleanup() {
|
|
215
|
+
try {
|
|
216
|
+
await this.sourcePool.end();
|
|
217
|
+
await this.targetPool.end();
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
this.logger.error(`Error during cleanup: ${error.message}`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
exports.SchemaDiscrepancyFixer = SchemaDiscrepancyFixer;
|
|
225
|
+
async function run() {
|
|
226
|
+
try {
|
|
227
|
+
const reportPath = process.argv[2];
|
|
228
|
+
const fixer = new SchemaDiscrepancyFixer(process.env.SOURCE_DATABASE_URL, process.env.DATABASE_URL, reportPath);
|
|
229
|
+
await fixer.fixDiscrepancies();
|
|
230
|
+
process.exit(0);
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
console.error('Error:', error.message);
|
|
234
|
+
process.exit(1);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
if (require.main === module) {
|
|
238
|
+
run();
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=fix-schema-discrepancies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix-schema-discrepancies.js","sourceRoot":"","sources":["../../src/scripts/fix-schema-discrepancies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const client_1 = require("@prisma/client");
|
|
4
|
+
const child_process_1 = require("child_process");
|
|
5
|
+
const util_1 = require("util");
|
|
6
|
+
const dotenv = require("dotenv");
|
|
7
|
+
dotenv.config();
|
|
8
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
9
|
+
async function migrateSchemaStructure() {
|
|
10
|
+
const sourcePrisma = new client_1.PrismaClient({
|
|
11
|
+
datasources: {
|
|
12
|
+
db: {
|
|
13
|
+
url: process.env.SOURCE_DATABASE_URL,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
const targetPrisma = new client_1.PrismaClient({
|
|
18
|
+
datasources: {
|
|
19
|
+
db: {
|
|
20
|
+
url: process.env.DATABASE_URL,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
try {
|
|
25
|
+
console.log("Fetching API keys and creating schemas...");
|
|
26
|
+
const apiKeys = await sourcePrisma.api_keys.findMany({
|
|
27
|
+
select: {
|
|
28
|
+
api_key: true,
|
|
29
|
+
providers: {
|
|
30
|
+
select: {
|
|
31
|
+
name: true,
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
for (const apiKey of apiKeys) {
|
|
37
|
+
const schemaName = apiKey.api_key;
|
|
38
|
+
await targetPrisma.$executeRawUnsafe(`CREATE SCHEMA IF NOT EXISTS "${schemaName}"`);
|
|
39
|
+
const dbUrl = `${process.env.DATABASE_URL}?schema=${schemaName}`;
|
|
40
|
+
await execAsync(`DATABASE_URL="${dbUrl}" npx prisma db push --schema ./prisma/schema.prisma --skip-generate`);
|
|
41
|
+
const schemaExists = await checkSchemaExists(schemaName);
|
|
42
|
+
if (!schemaExists) {
|
|
43
|
+
throw new Error(`Failed to create schema ${schemaName}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
console.log("Schema structure migration completed successfully");
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
console.error("Error in schema migration process:", error);
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
await sourcePrisma.$disconnect();
|
|
54
|
+
await targetPrisma.$disconnect();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async function checkSchemaExists(schemaName) {
|
|
58
|
+
const prisma = new client_1.PrismaClient();
|
|
59
|
+
try {
|
|
60
|
+
const result = await prisma.$queryRaw `
|
|
61
|
+
SELECT schema_name
|
|
62
|
+
FROM information_schema.schemata
|
|
63
|
+
WHERE schema_name = ${schemaName}
|
|
64
|
+
`;
|
|
65
|
+
return Array.isArray(result) && result.length > 0;
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.error(`Error checking if schema exists: ${error}`);
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
await prisma.$disconnect();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
migrateSchemaStructure().catch(console.error);
|
|
76
|
+
//# sourceMappingURL=migrate-schema-structure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-schema-structure.js","sourceRoot":"","sources":["../../src/scripts/migrate-schema-structure.ts"],"names":[],"mappings":";;AAAA,2CAA8C;AAC9C,iDAAqC;AACrC,+BAAiC;AACjC,iCAAiC;AAEjC,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAElC,KAAK,UAAU,sBAAsB;IACnC,MAAM,YAAY,GAAG,IAAI,qBAAY,CAAC;QACpC,WAAW,EAAE;YACX,EAAE,EAAE;gBACF,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB;aACrC;SACF;KACF,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAI,qBAAY,CAAC;QACpC,WAAW,EAAE;YACX,EAAE,EAAE;gBACF,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;aAC9B;SACF;KACF,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QAEzD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnD,MAAM,EAAE;gBACN,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE;oBACT,MAAM,EAAE;wBACN,IAAI,EAAE,IAAI;qBACX;iBACF;aACF;SACF,CAAC,CAAC;QAEH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC;YAGlC,MAAM,YAAY,CAAC,iBAAiB,CAClC,gCAAgC,UAAU,GAAG,CAC9C,CAAC;YAGF,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,WAAW,UAAU,EAAE,CAAC;YACjE,MAAM,SAAS,CACb,iBAAiB,KAAK,sEAAsE,CAC7F,CAAC;YAGF,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACnE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACjD,MAAM,MAAM,GAAG,IAAI,qBAAY,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAA;;;4BAGb,UAAU;KACjC,CAAC;QAEF,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,sBAAsB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare class PostMigrationValidator {
|
|
2
|
+
private readonly sourceUrl;
|
|
3
|
+
private readonly targetUrl;
|
|
4
|
+
private readonly logger;
|
|
5
|
+
private readonly sourcePool;
|
|
6
|
+
private readonly targetPool;
|
|
7
|
+
private readonly reportPath;
|
|
8
|
+
private issues;
|
|
9
|
+
constructor(sourceUrl?: string, targetUrl?: string);
|
|
10
|
+
validate(): Promise<{
|
|
11
|
+
success: boolean;
|
|
12
|
+
issueCount: number;
|
|
13
|
+
reportPath: string;
|
|
14
|
+
}>;
|
|
15
|
+
private validateTenantData;
|
|
16
|
+
private validateTableData;
|
|
17
|
+
private validateRandomRecords;
|
|
18
|
+
private areValuesDifferent;
|
|
19
|
+
private saveReport;
|
|
20
|
+
private cleanup;
|
|
21
|
+
}
|