@javalabs/prisma-client 1.0.25 → 1.0.27

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 (121) hide show
  1. package/package.json +5 -5
  2. package/prisma/schema.prisma +0 -4
  3. package/dist/index.d.ts +0 -7
  4. package/dist/index.js +0 -34
  5. package/dist/index.js.map +0 -1
  6. package/dist/prisma-factory.service.d.ts +0 -9
  7. package/dist/prisma-factory.service.js +0 -47
  8. package/dist/prisma-factory.service.js.map +0 -1
  9. package/dist/prisma.module.d.ts +0 -2
  10. package/dist/prisma.module.js +0 -23
  11. package/dist/prisma.module.js.map +0 -1
  12. package/dist/prisma.service.d.ts +0 -6
  13. package/dist/prisma.service.js +0 -27
  14. package/dist/prisma.service.js.map +0 -1
  15. package/dist/scripts/add-uuid-to-table.d.ts +0 -8
  16. package/dist/scripts/add-uuid-to-table.js +0 -98
  17. package/dist/scripts/add-uuid-to-table.js.map +0 -1
  18. package/dist/scripts/create-tenant-schemas.d.ts +0 -1
  19. package/dist/scripts/create-tenant-schemas.js +0 -117
  20. package/dist/scripts/create-tenant-schemas.js.map +0 -1
  21. package/dist/scripts/data-migration/batch-migrator.d.ts +0 -20
  22. package/dist/scripts/data-migration/batch-migrator.js +0 -134
  23. package/dist/scripts/data-migration/batch-migrator.js.map +0 -1
  24. package/dist/scripts/data-migration/data-transformer.d.ts +0 -26
  25. package/dist/scripts/data-migration/data-transformer.js +0 -278
  26. package/dist/scripts/data-migration/data-transformer.js.map +0 -1
  27. package/dist/scripts/data-migration/db-connector.d.ts +0 -12
  28. package/dist/scripts/data-migration/db-connector.js +0 -94
  29. package/dist/scripts/data-migration/db-connector.js.map +0 -1
  30. package/dist/scripts/data-migration/dependency-resolver.d.ts +0 -18
  31. package/dist/scripts/data-migration/dependency-resolver.js +0 -132
  32. package/dist/scripts/data-migration/dependency-resolver.js.map +0 -1
  33. package/dist/scripts/data-migration/entity-discovery.d.ts +0 -11
  34. package/dist/scripts/data-migration/entity-discovery.js +0 -152
  35. package/dist/scripts/data-migration/entity-discovery.js.map +0 -1
  36. package/dist/scripts/data-migration/foreign-key-manager.d.ts +0 -18
  37. package/dist/scripts/data-migration/foreign-key-manager.js +0 -160
  38. package/dist/scripts/data-migration/foreign-key-manager.js.map +0 -1
  39. package/dist/scripts/data-migration/migration-tool.d.ts +0 -48
  40. package/dist/scripts/data-migration/migration-tool.js +0 -290
  41. package/dist/scripts/data-migration/migration-tool.js.map +0 -1
  42. package/dist/scripts/data-migration/schema-utils.d.ts +0 -18
  43. package/dist/scripts/data-migration/schema-utils.js +0 -207
  44. package/dist/scripts/data-migration/schema-utils.js.map +0 -1
  45. package/dist/scripts/data-migration/tenant-migrator.d.ts +0 -15
  46. package/dist/scripts/data-migration/tenant-migrator.js +0 -117
  47. package/dist/scripts/data-migration/tenant-migrator.js.map +0 -1
  48. package/dist/scripts/data-migration/typecast-manager.d.ts +0 -9
  49. package/dist/scripts/data-migration/typecast-manager.js +0 -179
  50. package/dist/scripts/data-migration/typecast-manager.js.map +0 -1
  51. package/dist/scripts/data-migration/types.d.ts +0 -100
  52. package/dist/scripts/data-migration/types.js +0 -3
  53. package/dist/scripts/data-migration/types.js.map +0 -1
  54. package/dist/scripts/database-initializer.d.ts +0 -5
  55. package/dist/scripts/database-initializer.js +0 -45
  56. package/dist/scripts/database-initializer.js.map +0 -1
  57. package/dist/scripts/drop-database.d.ts +0 -10
  58. package/dist/scripts/drop-database.js +0 -81
  59. package/dist/scripts/drop-database.js.map +0 -1
  60. package/dist/scripts/encrypt-user-passwords.d.ts +0 -1
  61. package/dist/scripts/encrypt-user-passwords.js +0 -33
  62. package/dist/scripts/encrypt-user-passwords.js.map +0 -1
  63. package/dist/scripts/error-handler.d.ts +0 -12
  64. package/dist/scripts/error-handler.js +0 -82
  65. package/dist/scripts/error-handler.js.map +0 -1
  66. package/dist/scripts/fix-data-types.d.ts +0 -10
  67. package/dist/scripts/fix-data-types.js +0 -185
  68. package/dist/scripts/fix-data-types.js.map +0 -1
  69. package/dist/scripts/fix-enum-values.d.ts +0 -17
  70. package/dist/scripts/fix-enum-values.js +0 -234
  71. package/dist/scripts/fix-enum-values.js.map +0 -1
  72. package/dist/scripts/fix-schema-discrepancies.d.ts +0 -21
  73. package/dist/scripts/fix-schema-discrepancies.js +0 -240
  74. package/dist/scripts/fix-schema-discrepancies.js.map +0 -1
  75. package/dist/scripts/fix-table-indexes.d.ts +0 -26
  76. package/dist/scripts/fix-table-indexes.js +0 -460
  77. package/dist/scripts/fix-table-indexes.js.map +0 -1
  78. package/dist/scripts/migrate-schema-structure.d.ts +0 -1
  79. package/dist/scripts/migrate-schema-structure.js +0 -76
  80. package/dist/scripts/migrate-schema-structure.js.map +0 -1
  81. package/dist/scripts/migrate-uuid.d.ts +0 -2
  82. package/dist/scripts/migrate-uuid.js +0 -57
  83. package/dist/scripts/migrate-uuid.js.map +0 -1
  84. package/dist/scripts/post-migration-validator.d.ts +0 -34
  85. package/dist/scripts/post-migration-validator.js +0 -363
  86. package/dist/scripts/post-migration-validator.js.map +0 -1
  87. package/dist/scripts/pre-migration-validator.d.ts +0 -25
  88. package/dist/scripts/pre-migration-validator.js +0 -491
  89. package/dist/scripts/pre-migration-validator.js.map +0 -1
  90. package/dist/scripts/reset-database.d.ts +0 -17
  91. package/dist/scripts/reset-database.js +0 -202
  92. package/dist/scripts/reset-database.js.map +0 -1
  93. package/dist/scripts/retry-failed-migrations.d.ts +0 -14
  94. package/dist/scripts/retry-failed-migrations.js +0 -301
  95. package/dist/scripts/retry-failed-migrations.js.map +0 -1
  96. package/dist/scripts/run-migration.d.ts +0 -1
  97. package/dist/scripts/run-migration.js +0 -512
  98. package/dist/scripts/run-migration.js.map +0 -1
  99. package/dist/scripts/schema-sync.d.ts +0 -1
  100. package/dist/scripts/schema-sync.js +0 -85
  101. package/dist/scripts/schema-sync.js.map +0 -1
  102. package/dist/scripts/sequence-sync-cli.d.ts +0 -2
  103. package/dist/scripts/sequence-sync-cli.js +0 -287
  104. package/dist/scripts/sequence-sync-cli.js.map +0 -1
  105. package/dist/scripts/sequence-synchronizer.d.ts +0 -8
  106. package/dist/scripts/sequence-synchronizer.js +0 -88
  107. package/dist/scripts/sequence-synchronizer.js.map +0 -1
  108. package/dist/scripts/sync-enum-types.d.ts +0 -13
  109. package/dist/scripts/sync-enum-types.js +0 -139
  110. package/dist/scripts/sync-enum-types.js.map +0 -1
  111. package/dist/scripts/sync-enum-values.d.ts +0 -20
  112. package/dist/scripts/sync-enum-values.js +0 -336
  113. package/dist/scripts/sync-enum-values.js.map +0 -1
  114. package/dist/scripts/truncate-database.d.ts +0 -10
  115. package/dist/scripts/truncate-database.js +0 -100
  116. package/dist/scripts/truncate-database.js.map +0 -1
  117. package/dist/scripts/verify-migration-setup.d.ts +0 -11
  118. package/dist/scripts/verify-migration-setup.js +0 -120
  119. package/dist/scripts/verify-migration-setup.js.map +0 -1
  120. package/dist/tsconfig.tsbuildinfo +0 -1
  121. package/prisma/migrations/add_athena_match_fields.sql +0 -13
@@ -1,117 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TenantMigrator = void 0;
4
- const common_1 = require("@nestjs/common");
5
- const client_1 = require("@prisma/client");
6
- const dependency_resolver_1 = require("./dependency-resolver");
7
- class TenantMigrator {
8
- constructor(schemaUtils, entityDiscovery, batchMigrator, connections) {
9
- this.schemaUtils = schemaUtils;
10
- this.entityDiscovery = entityDiscovery;
11
- this.batchMigrator = batchMigrator;
12
- this.connections = connections;
13
- this.logger = new common_1.Logger("TenantMigrator");
14
- this.dependencyResolver = new dependency_resolver_1.DependencyResolver(connections.sourcePool, connections.targetPool);
15
- }
16
- async verifyPhaseDependencies(tenantId, tables) {
17
- try {
18
- for (const table of tables) {
19
- const count = await this.connections.targetPrisma.$queryRawUnsafe(`SELECT COUNT(*) FROM "${tenantId}"."${table}"`);
20
- if (!count || count[0].count === "0") {
21
- this.logger.warn(`No data found in required table ${table} for tenant ${tenantId}`);
22
- return false;
23
- }
24
- }
25
- return true;
26
- }
27
- catch (error) {
28
- this.logger.error(`Error verifying phase dependencies: ${error.message}`);
29
- return false;
30
- }
31
- }
32
- async migrateDataForTenant(tenantId, providerId, includeTables, excludeTables) {
33
- this.logger.log(`Migrating data for tenant: ${tenantId} (Provider ID: ${providerId || "N/A"})`);
34
- try {
35
- let tenantExists = false;
36
- try {
37
- const result = await this.connections.sourcePrisma.api_keys.findFirst({
38
- where: {
39
- api_key: tenantId,
40
- OR: [{ provider_id: providerId }, { provider_id: null }],
41
- },
42
- });
43
- tenantExists = !!result;
44
- }
45
- catch (error) {
46
- this.logger.warn(`Error checking tenant existence, will assume using public schema: ${error.message}`);
47
- tenantExists = true;
48
- }
49
- if (!tenantExists) {
50
- this.logger.warn(`Tenant ${tenantId} does not exist or does not belong to provider ${providerId || "N/A"}. Using public schema as source.`);
51
- }
52
- this.logger.log(`Proceeding with migration for tenant ${tenantId}`);
53
- }
54
- catch (error) {
55
- this.logger.error(`Error verifying tenant ${tenantId} for provider ${providerId || "N/A"}: ${error.message}`);
56
- this.logger.error(`Error details: ${JSON.stringify(error)}`);
57
- }
58
- const tenantPrisma = new client_1.PrismaClient({
59
- datasources: {
60
- db: {
61
- url: `${process.env.DATABASE_URL}?schema=${tenantId}`,
62
- },
63
- },
64
- transactionOptions: {
65
- maxWait: 300000,
66
- timeout: 300000,
67
- },
68
- log: ["query", "error", "warn"],
69
- });
70
- try {
71
- const schemaExists = await this.schemaUtils.checkSchemaExists(tenantId);
72
- if (!schemaExists) {
73
- this.logger.error(`Schema ${tenantId} does not exist in target database. Skipping migration.`);
74
- return;
75
- }
76
- const targetTables = await this.schemaUtils.getTargetTables(tenantId);
77
- let entityTypes = await this.entityDiscovery.discoverEntityTypes(tenantId, targetTables);
78
- if (includeTables) {
79
- entityTypes = entityTypes.filter((entity) => includeTables.includes(entity.name));
80
- this.logger.log(`Filtered to include only: ${includeTables.join(", ")}`);
81
- }
82
- if (excludeTables) {
83
- entityTypes = entityTypes.filter((entity) => !excludeTables.includes(entity.name));
84
- this.logger.log(`Filtered to exclude: ${excludeTables.join(", ")}`);
85
- }
86
- const sortedTables = await this.dependencyResolver.analyzeDependencies();
87
- const orderedEntities = entityTypes
88
- .sort((a, b) => {
89
- const aIndex = sortedTables.indexOf(a.name);
90
- const bIndex = sortedTables.indexOf(b.name);
91
- return aIndex - bIndex;
92
- })
93
- .filter((entity) => sortedTables.includes(entity.name));
94
- this.logger.log(`Migration order: ${orderedEntities.map((e) => e.name).join(" -> ")}`);
95
- this.logger.log(`Discovered ${entityTypes.length} entity types for migration`);
96
- for (const entity of orderedEntities) {
97
- await this.batchMigrator.migrateEntityDataInBatches("public", tenantId, {
98
- type: "tenant",
99
- idField: entity.idField,
100
- sourceTable: entity.name,
101
- targetTable: entity.name,
102
- filterColumn: entity.filterColumn,
103
- via: entity.filterVia,
104
- }, providerId === null || providerId === void 0 ? void 0 : providerId.toString());
105
- }
106
- this.logger.log(`Completed migration for tenant ${tenantId}`);
107
- }
108
- catch (error) {
109
- this.logger.error(`Error migrating data for tenant ${tenantId}: ${error.message}`);
110
- }
111
- finally {
112
- await tenantPrisma.$disconnect();
113
- }
114
- }
115
- }
116
- exports.TenantMigrator = TenantMigrator;
117
- //# sourceMappingURL=tenant-migrator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tenant-migrator.js","sourceRoot":"","sources":["../../../src/scripts/data-migration/tenant-migrator.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- export declare class TypecastManager {
2
- private readonly prisma;
3
- private readonly cache;
4
- private readonly compatibilityMap;
5
- getTypecastForColumn(tableName: string, columnName: string): Promise<string | undefined>;
6
- private loadTableSchema;
7
- areTypesCompatible(sourceType: string, targetType: string): boolean;
8
- castValue(value: any, sourceType: string, targetType: string): any;
9
- }
@@ -1,179 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TypecastManager = void 0;
4
- const client_1 = require("@prisma/client");
5
- class TypecastManager {
6
- constructor() {
7
- this.prisma = new client_1.PrismaClient();
8
- this.cache = new Map();
9
- this.compatibilityMap = {
10
- integer: ["bigint", "smallint", "numeric", "decimal"],
11
- bigint: ["integer", "numeric", "decimal"],
12
- smallint: ["integer", "bigint", "numeric", "decimal"],
13
- numeric: [
14
- "integer",
15
- "bigint",
16
- "smallint",
17
- "decimal",
18
- "real",
19
- "double precision",
20
- ],
21
- decimal: [
22
- "numeric",
23
- "integer",
24
- "bigint",
25
- "smallint",
26
- "real",
27
- "double precision",
28
- ],
29
- real: ["numeric", "decimal", "double precision"],
30
- "double precision": ["numeric", "decimal", "real"],
31
- "character varying": ["text", "char", "varchar"],
32
- varchar: ["text", "character varying", "char"],
33
- char: ["text", "character varying", "varchar"],
34
- text: ["character varying", "varchar", "char"],
35
- timestamp: [
36
- "timestamptz",
37
- "timestamp without time zone",
38
- "timestamp with time zone",
39
- ],
40
- timestamptz: [
41
- "timestamp",
42
- "timestamp without time zone",
43
- "timestamp with time zone",
44
- ],
45
- date: ["timestamp", "timestamptz"],
46
- boolean: ["bool"],
47
- json: ["jsonb"],
48
- jsonb: ["json"],
49
- };
50
- }
51
- async getTypecastForColumn(tableName, columnName) {
52
- if (!this.cache.has(tableName)) {
53
- await this.loadTableSchema(tableName);
54
- }
55
- const tableSchema = this.cache.get(tableName);
56
- return tableSchema === null || tableSchema === void 0 ? void 0 : tableSchema.get(columnName);
57
- }
58
- async loadTableSchema(tableName) {
59
- const columns = await this.prisma.$queryRawUnsafe(`
60
- SELECT column_name, data_type, udt_name, is_nullable
61
- FROM information_schema.columns
62
- WHERE table_name = '${tableName}'
63
- `);
64
- const tableSchema = new Map();
65
- for (const column of columns) {
66
- const { column_name, data_type, udt_name, is_nullable } = column;
67
- let typecast;
68
- switch (data_type.toLowerCase()) {
69
- case "timestamp with time zone":
70
- case "timestamp without time zone":
71
- case "timestamptz":
72
- typecast = "::timestamp with time zone";
73
- break;
74
- case "timestamp":
75
- typecast = "::timestamp";
76
- break;
77
- case "integer":
78
- typecast = "::integer";
79
- break;
80
- case "bigint":
81
- typecast = "::bigint";
82
- break;
83
- case "boolean":
84
- typecast = "::boolean";
85
- break;
86
- case "numeric":
87
- case "decimal":
88
- typecast = "::numeric";
89
- break;
90
- case "double precision":
91
- typecast = "::double precision";
92
- break;
93
- case "text":
94
- case "character varying":
95
- case "varchar":
96
- typecast = "::text";
97
- break;
98
- case "date":
99
- typecast = "::date";
100
- break;
101
- case "time":
102
- case "time without time zone":
103
- typecast = "::time";
104
- break;
105
- case "time with time zone":
106
- typecast = "::timetz";
107
- break;
108
- case "json":
109
- typecast = "::json";
110
- break;
111
- case "jsonb":
112
- typecast = "::jsonb";
113
- break;
114
- case "uuid":
115
- typecast = "::uuid";
116
- break;
117
- default:
118
- if (udt_name.startsWith("_")) {
119
- typecast = `::${udt_name.substring(1)}[]`;
120
- }
121
- else if (udt_name.startsWith("enum_")) {
122
- typecast = `::${udt_name}`;
123
- }
124
- else {
125
- typecast = undefined;
126
- }
127
- }
128
- tableSchema.set(column_name, typecast);
129
- }
130
- this.cache.set(tableName, tableSchema);
131
- }
132
- areTypesCompatible(sourceType, targetType) {
133
- if (sourceType.toLowerCase() === targetType.toLowerCase()) {
134
- return true;
135
- }
136
- const compatibleTypes = this.compatibilityMap[sourceType.toLowerCase()] || [];
137
- return compatibleTypes.includes(targetType.toLowerCase());
138
- }
139
- castValue(value, sourceType, targetType) {
140
- if (value === null || value === undefined) {
141
- return null;
142
- }
143
- try {
144
- switch (targetType.toLowerCase()) {
145
- case "integer":
146
- case "bigint":
147
- case "smallint":
148
- return parseInt(value, 10);
149
- case "numeric":
150
- case "decimal":
151
- case "real":
152
- case "double precision":
153
- return parseFloat(value);
154
- case "boolean":
155
- return Boolean(value);
156
- case "json":
157
- case "jsonb":
158
- return typeof value === "string" ? JSON.parse(value) : value;
159
- case "timestamp":
160
- case "timestamptz":
161
- return new Date(value).toISOString();
162
- case "date":
163
- return new Date(value).toISOString().split("T")[0];
164
- case "text":
165
- case "character varying":
166
- case "varchar":
167
- case "char":
168
- return String(value);
169
- default:
170
- return value;
171
- }
172
- }
173
- catch (error) {
174
- throw new Error(`Error al convertir valor "${value}" de ${sourceType} a ${targetType}: ${error.message}`);
175
- }
176
- }
177
- }
178
- exports.TypecastManager = TypecastManager;
179
- //# sourceMappingURL=typecast-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"typecast-manager.js","sourceRoot":"","sources":["../../../src/scripts/data-migration/typecast-manager.ts"],"names":[],"mappings":"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"}
@@ -1,100 +0,0 @@
1
- import { Pool } from "pg";
2
- import { PrismaClient } from "@prisma/client";
3
- export interface DatabaseConnection {
4
- pool?: Pool;
5
- prisma?: PrismaClient;
6
- query: (sql: string, params?: any[]) => Promise<any>;
7
- sourceId: string;
8
- }
9
- export interface DatabaseConnections {
10
- sourceConnections?: DatabaseConnection[];
11
- sourcePool?: Pool;
12
- targetPool: Pool;
13
- targetPrisma: PrismaClient;
14
- sourcePrisma?: PrismaClient;
15
- }
16
- export interface ColumnSchema {
17
- table_name: string;
18
- column_name: string;
19
- data_type: string;
20
- udt_name: string;
21
- character_maximum_length?: number;
22
- is_nullable: string;
23
- column_default?: string;
24
- constraint_type?: string;
25
- }
26
- export interface EntityType {
27
- name: string;
28
- idField: string;
29
- filterColumn?: string;
30
- filterVia?: string;
31
- foreignKey?: string;
32
- joinTable?: string;
33
- joinField?: string;
34
- joinForeignKey?: string;
35
- directQuery?: string;
36
- }
37
- export interface EnumCastValue {
38
- needsEnumCast: boolean;
39
- value: any;
40
- enumType: string;
41
- }
42
- export interface MigrationOptions {
43
- publicOnly?: boolean;
44
- multiTenant?: boolean;
45
- sourceSchema?: string;
46
- targetSchema?: string;
47
- forceSingleTenant?: boolean;
48
- configPath?: string;
49
- batchSize?: number;
50
- retryAttempts?: number;
51
- validateData?: boolean;
52
- logLevel?: "debug" | "info" | "warn" | "error";
53
- }
54
- export interface ColumnConfig {
55
- sourceColumn?: string;
56
- targetColumn?: string;
57
- type?: string;
58
- nullable?: boolean;
59
- defaultValue?: any;
60
- transform?: (value: any) => any;
61
- }
62
- export interface TableConfig {
63
- type: "public" | "filteredPublic" | "tenantInfo" | "tenant";
64
- idField: string;
65
- filterColumn?: string;
66
- via?: string;
67
- providerLink?: string;
68
- tenantKey?: string;
69
- dependencies?: string[];
70
- sourceTable?: string;
71
- targetTable?: string;
72
- columns?: Record<string, ColumnConfig>;
73
- skipIfExists?: boolean;
74
- batchSize?: number;
75
- }
76
- export interface ExtendedTableConfig extends TableConfig {
77
- processed?: boolean;
78
- retryCount?: number;
79
- lastError?: Error;
80
- }
81
- export interface ExtendedMigrationConfig {
82
- tables: Record<string, ExtendedTableConfig>;
83
- version: string;
84
- sourceSchema?: string;
85
- targetSchema?: string;
86
- }
87
- export interface MigrationConfig {
88
- commonSchema: string;
89
- tables: Record<string, TableConfig>;
90
- tenantInfo: {
91
- sourceTable: string;
92
- tenantIdColumn: string;
93
- providerIdColumn: string;
94
- };
95
- migrationPriorities?: {
96
- high?: string[];
97
- medium?: string[];
98
- low?: string[];
99
- };
100
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/scripts/data-migration/types.ts"],"names":[],"mappings":""}
@@ -1,5 +0,0 @@
1
- export declare class DatabaseInitializer {
2
- private readonly databaseUrl;
3
- constructor(databaseUrl: string);
4
- initialize(): Promise<void>;
5
- }
@@ -1,45 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DatabaseInitializer = void 0;
4
- const child_process_1 = require("child_process");
5
- const util_1 = require("util");
6
- const execAsync = (0, util_1.promisify)(child_process_1.exec);
7
- class DatabaseInitializer {
8
- constructor(databaseUrl) {
9
- this.databaseUrl = databaseUrl;
10
- }
11
- async initialize() {
12
- try {
13
- console.log("Checking if database needs initialization...");
14
- const { Pool } = await Promise.resolve().then(() => require("pg"));
15
- const pool = new Pool({ connectionString: this.databaseUrl });
16
- try {
17
- const result = await pool.query(`
18
- SELECT COUNT(*)
19
- FROM information_schema.tables
20
- WHERE table_schema = 'public'
21
- AND table_type = 'BASE TABLE'
22
- `);
23
- const tableCount = parseInt(result.rows[0].count);
24
- if (tableCount === 0) {
25
- console.log("No tables found in database. Running initial migration...");
26
- await execAsync("npx prisma migrate deploy");
27
- await execAsync("npx prisma db push");
28
- console.log("Initial database migration completed successfully.");
29
- }
30
- else {
31
- console.log(`Database already contains ${tableCount} tables. Skipping initialization.`);
32
- }
33
- }
34
- finally {
35
- await pool.end();
36
- }
37
- }
38
- catch (error) {
39
- console.error("Error initializing database:", error);
40
- throw error;
41
- }
42
- }
43
- }
44
- exports.DatabaseInitializer = DatabaseInitializer;
45
- //# sourceMappingURL=database-initializer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-initializer.js","sourceRoot":"","sources":["../../src/scripts/database-initializer.ts"],"names":[],"mappings":";;;AACA,iDAAqC;AACrC,+BAAiC;AAEjC,MAAM,SAAS,GAAG,IAAA,gBAAS,EAAC,oBAAI,CAAC,CAAC;AAElC,MAAa,mBAAmB;IAC9B,YAA6B,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;IAAG,CAAC;IAEpD,KAAK,CAAC,UAAU;QACd,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,2CAAa,IAAI,EAAC,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAE9D,IAAI,CAAC;gBAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;;;;;SAK/B,CAAC,CAAC;gBAEH,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAElD,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;oBACrB,OAAO,CAAC,GAAG,CACT,2DAA2D,CAC5D,CAAC;oBAEF,MAAM,SAAS,CAAC,2BAA2B,CAAC,CAAC;oBAC7C,MAAM,SAAS,CAAC,oBAAoB,CAAC,CAAC;oBACtC,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;gBACpE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CACT,6BAA6B,UAAU,mCAAmC,CAC3E,CAAC;gBACJ,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AA1CD,kDA0CC"}
@@ -1,10 +0,0 @@
1
- export declare class DatabaseDropTool {
2
- private readonly databaseUrl;
3
- private readonly logger;
4
- private readonly adminPool;
5
- constructor(databaseUrl: string);
6
- dropDatabase(): Promise<void>;
7
- private extractDatabaseName;
8
- private terminateConnections;
9
- private cleanup;
10
- }
@@ -1,81 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DatabaseDropTool = void 0;
4
- const pg = require("pg");
5
- const dotenv = require("dotenv");
6
- const common_1 = require("@nestjs/common");
7
- dotenv.config();
8
- class DatabaseDropTool {
9
- constructor(databaseUrl) {
10
- this.databaseUrl = databaseUrl;
11
- this.logger = new common_1.Logger("DatabaseDropTool");
12
- const adminUrl = this.databaseUrl.replace(/\/[^/]+$/, "/postgres");
13
- this.adminPool = new pg.Pool({
14
- connectionString: adminUrl,
15
- });
16
- }
17
- async dropDatabase() {
18
- try {
19
- this.logger.log("Starting database drop process");
20
- const dbName = this.extractDatabaseName(this.databaseUrl);
21
- if (!dbName) {
22
- throw new Error("Could not extract database name from connection URL");
23
- }
24
- this.logger.log(`Attempting to drop database: ${dbName}`);
25
- await this.terminateConnections(dbName);
26
- await this.adminPool.query(`DROP DATABASE IF EXISTS "${dbName}"`);
27
- this.logger.log(`Database ${dbName} has been successfully dropped`);
28
- }
29
- catch (error) {
30
- this.logger.error(`Error dropping database: ${error.message}`, error.stack);
31
- throw error;
32
- }
33
- finally {
34
- await this.cleanup();
35
- }
36
- }
37
- extractDatabaseName(url) {
38
- const matches = url.match(/\/([^/?]+)($|\?)/);
39
- return matches ? matches[1] : null;
40
- }
41
- async terminateConnections(dbName) {
42
- this.logger.log(`Terminating all connections to database: ${dbName}`);
43
- try {
44
- await this.adminPool.query(`
45
- SELECT pg_terminate_backend(pg_stat_activity.pid)
46
- FROM pg_stat_activity
47
- WHERE pg_stat_activity.datname = $1
48
- AND pid <> pg_backend_pid()
49
- `, [dbName]);
50
- this.logger.log("All connections terminated successfully");
51
- }
52
- catch (error) {
53
- this.logger.error(`Error terminating connections: ${error.message}`);
54
- }
55
- }
56
- async cleanup() {
57
- this.logger.log("Cleaning up database connections");
58
- await this.adminPool.end();
59
- }
60
- }
61
- exports.DatabaseDropTool = DatabaseDropTool;
62
- if (require.main === module) {
63
- const run = async () => {
64
- try {
65
- const databaseUrl = process.argv[2] || process.env.DATABASE_URL;
66
- if (!databaseUrl) {
67
- console.error("Error: No database URL provided. Please provide a database URL as an argument or set DATABASE_URL environment variable.");
68
- process.exit(1);
69
- }
70
- const dropTool = new DatabaseDropTool(databaseUrl);
71
- await dropTool.dropDatabase();
72
- process.exit(0);
73
- }
74
- catch (error) {
75
- console.error("Error:", error.message);
76
- process.exit(1);
77
- }
78
- };
79
- run();
80
- }
81
- //# sourceMappingURL=drop-database.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"drop-database.js","sourceRoot":"","sources":["../../src/scripts/drop-database.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const client_1 = require("@prisma/client");
4
- const bcrypt = require("bcrypt");
5
- const prisma = new client_1.PrismaClient();
6
- const SALT_ROUNDS = 10;
7
- const PEPPER = process.env.PASSWORD_PEPPER || "clave-secreta-super-segura";
8
- function generateDefaultPassword(email) {
9
- const randomId = Math.floor(1000 + Math.random() * 9000);
10
- return `PASS-${email}-${randomId}`;
11
- }
12
- async function encryptPasswords() {
13
- const users = await prisma.users.findMany();
14
- let updated = 0;
15
- for (const user of users) {
16
- const defaultPassword = generateDefaultPassword(user.email);
17
- const hashed = await bcrypt.hash(defaultPassword + PEPPER, SALT_ROUNDS);
18
- await prisma.users.update({
19
- where: { user_id: user.user_id },
20
- data: { password: hashed },
21
- });
22
- updated++;
23
- console.log(`Usuario: ${user.email} | Nuevo password: ${defaultPassword}`);
24
- }
25
- console.log(`Total de contraseñas generadas y cifradas: ${updated}`);
26
- await prisma.$disconnect();
27
- }
28
- encryptPasswords().catch((e) => {
29
- console.error("Error al cifrar contraseñas:", e);
30
- prisma.$disconnect();
31
- process.exit(1);
32
- });
33
- //# sourceMappingURL=encrypt-user-passwords.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"encrypt-user-passwords.js","sourceRoot":"","sources":["../../src/scripts/encrypt-user-passwords.ts"],"names":[],"mappings":";;AAAA,2CAA8C;AAC9C,iCAAiC;AAEjC,MAAM,MAAM,GAAG,IAAI,qBAAY,EAAE,CAAC;AAClC,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,4BAA4B,CAAC;AAE3E,SAAS,uBAAuB,CAAC,KAAa;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IACzD,OAAO,QAAQ,KAAK,IAAI,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC7B,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC5C,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,eAAe,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,GAAG,MAAM,EAAE,WAAW,CAAC,CAAC;QACxE,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;YACxB,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;YAChC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;SAC3B,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,sBAAsB,eAAe,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAC;IACrE,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;AAC7B,CAAC;AAED,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IAC7B,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,WAAW,EAAE,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,12 +0,0 @@
1
- export declare class MigrationErrorHandler {
2
- private readonly logDir;
3
- private readonly logger;
4
- private errorLog;
5
- private errorLogPath;
6
- constructor(logDir?: string);
7
- logError(tenantId: string, entityName: string, recordId: any, error: Error, data?: any): void;
8
- private saveErrorLog;
9
- generateErrorReport(): string;
10
- getErrorsForTenant(tenantId: string): any[];
11
- getAllErrors(): Record<string, any[]>;
12
- }