@codemastersolutions/db-utility 0.0.11 → 0.0.12

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.
@@ -0,0 +1,383 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ModelTester = void 0;
37
+ const child_process_1 = require("child_process");
38
+ const fs_1 = require("fs");
39
+ const path_1 = require("path");
40
+ class ModelTester {
41
+ config;
42
+ constructor(config) {
43
+ this.config = config;
44
+ }
45
+ async test(target, modelsDir) {
46
+ const pkgManager = this.detectPackageManager();
47
+ await this.checkAndInstallORM(target, pkgManager);
48
+ console.log(`Testing models for ${target}...`);
49
+ switch (target.toLowerCase()) {
50
+ case 'sequelize':
51
+ await this.testSequelize(modelsDir);
52
+ break;
53
+ case 'typeorm':
54
+ await this.testTypeORM(modelsDir);
55
+ break;
56
+ case 'prisma':
57
+ await this.testPrisma(modelsDir);
58
+ break;
59
+ default:
60
+ throw new Error(`Testing not supported for ${target}`);
61
+ }
62
+ }
63
+ detectPackageManager() {
64
+ if ((0, fs_1.existsSync)('yarn.lock'))
65
+ return 'yarn';
66
+ if ((0, fs_1.existsSync)('pnpm-lock.yaml'))
67
+ return 'pnpm';
68
+ return 'npm';
69
+ }
70
+ async checkAndInstallORM(target, pkgManager) {
71
+ const packageName = this.getPackageName(target);
72
+ const isInstalled = this.isPackageInstalled(packageName);
73
+ if (isInstalled) {
74
+ console.log(`ORM ${packageName} is already installed.`);
75
+ return;
76
+ }
77
+ const inquirer = (await Promise.resolve().then(() => __importStar(require('inquirer')))).default;
78
+ const { install } = await inquirer.prompt([
79
+ {
80
+ type: 'confirm',
81
+ name: 'install',
82
+ message: `ORM ${packageName} is not installed. Do you want to install it?`,
83
+ default: true,
84
+ },
85
+ ]);
86
+ if (!install) {
87
+ console.log('Aborting operation as ORM is required for testing.');
88
+ process.exit(0);
89
+ }
90
+ const { version } = await inquirer.prompt([
91
+ {
92
+ type: 'input',
93
+ name: 'version',
94
+ message: `Which version of ${packageName} do you want to install? (Leave empty for latest)`,
95
+ default: '',
96
+ },
97
+ ]);
98
+ const installCmd = this.getInstallCommand(pkgManager, packageName, version);
99
+ console.log(`Installing ${packageName}...`);
100
+ try {
101
+ (0, child_process_1.execSync)(installCmd, { stdio: 'inherit' });
102
+ console.log(`Successfully installed ${packageName}.`);
103
+ }
104
+ catch (error) {
105
+ console.error(`Failed to install ${packageName}.`);
106
+ throw error;
107
+ }
108
+ }
109
+ getPackageName(target) {
110
+ switch (target.toLowerCase()) {
111
+ case 'sequelize':
112
+ return 'sequelize';
113
+ case 'typeorm':
114
+ return 'typeorm';
115
+ case 'prisma':
116
+ return 'prisma';
117
+ case 'mongoose':
118
+ return 'mongoose';
119
+ default:
120
+ throw new Error(`Unknown target: ${target}`);
121
+ }
122
+ }
123
+ isPackageInstalled(packageName) {
124
+ if ((0, fs_1.existsSync)('package.json')) {
125
+ const pkg = JSON.parse((0, fs_1.readFileSync)('package.json', 'utf-8'));
126
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
127
+ if (deps[packageName])
128
+ return true;
129
+ }
130
+ try {
131
+ (0, child_process_1.execSync)(`npm list -g ${packageName}`, { stdio: 'ignore' });
132
+ return true;
133
+ }
134
+ catch {
135
+ return false;
136
+ }
137
+ }
138
+ getInstallCommand(pkgManager, packageName, version) {
139
+ const pkgWithVersion = version ? `${packageName}@${version}` : packageName;
140
+ switch (pkgManager) {
141
+ case 'yarn':
142
+ return `yarn add ${pkgWithVersion}`;
143
+ case 'pnpm':
144
+ return `pnpm add ${pkgWithVersion}`;
145
+ default:
146
+ return `npm install ${pkgWithVersion}`;
147
+ }
148
+ }
149
+ async testSequelize(modelsDir) {
150
+ const testFile = (0, path_1.join)(modelsDir, 'test-sequelize-models.ts');
151
+ const script = `
152
+ import { Sequelize, DataTypes } from 'sequelize';
153
+ import * as fs from 'fs';
154
+ import * as path from 'path';
155
+
156
+ // Config
157
+ const config = ${JSON.stringify(this.config)};
158
+
159
+ const sequelize = new Sequelize(config.database, config.username, config.password, {
160
+ host: config.host,
161
+ port: config.port,
162
+ dialect: config.type as any,
163
+ logging: false,
164
+ });
165
+
166
+ async function run() {
167
+ try {
168
+ await sequelize.authenticate();
169
+ console.log('Connection has been established successfully.');
170
+
171
+ // Find all model files
172
+ const files = fs.readdirSync('${modelsDir}').filter(f => f.endsWith('.ts') && f !== 'test-sequelize-models.ts');
173
+
174
+ for (const file of files) {
175
+ const modelName = path.basename(file, '.ts');
176
+ console.log(\`Testing model: \${modelName}\`);
177
+
178
+ // Dynamic import of the model
179
+ // Note: In generated models, we export a class and an init function.
180
+ // We need to import the file.
181
+ // Since we are running this script with ts-node, we can use require or import.
182
+
183
+ const modelModule = require(path.join('${modelsDir}', file));
184
+
185
+ // Check if it has init function
186
+ if (typeof modelModule.init === 'function') {
187
+ const Model = modelModule.init(sequelize);
188
+
189
+ // Try a simple query
190
+ try {
191
+ const count = await Model.count();
192
+ console.log(\`✅ \${modelName}: Count query successful (Rows: \${count})\`);
193
+
194
+ const item = await Model.findOne();
195
+ if (item) {
196
+ console.log(\` Sample data: \${JSON.stringify(item.toJSON())}\`);
197
+ }
198
+ } catch (err) {
199
+ console.error(\`❌ \${modelName}: Query failed\`, err);
200
+ }
201
+ } else {
202
+ console.warn(\`⚠️ \${modelName}: No init function found\`);
203
+ }
204
+ }
205
+
206
+ } catch (error) {
207
+ console.error('Unable to connect to the database:', error);
208
+ process.exit(1);
209
+ } finally {
210
+ await sequelize.close();
211
+ }
212
+ }
213
+
214
+ run();
215
+ `;
216
+ (0, fs_1.writeFileSync)(testFile, script);
217
+ console.log(`Running test script: ${testFile}`);
218
+ try {
219
+ (0, child_process_1.execSync)(`npx ts-node "${testFile}"`, { stdio: 'inherit' });
220
+ }
221
+ finally {
222
+ if ((0, fs_1.existsSync)(testFile)) {
223
+ (0, fs_1.unlinkSync)(testFile);
224
+ }
225
+ }
226
+ }
227
+ async testTypeORM(modelsDir) {
228
+ const testFile = (0, path_1.join)(modelsDir, 'test-typeorm-models.ts');
229
+ const script = `
230
+ import { DataSource } from 'typeorm';
231
+ import * as fs from 'fs';
232
+ import * as path from 'path';
233
+
234
+ // Config
235
+ const config = ${JSON.stringify(this.config)};
236
+
237
+ // Load entities
238
+ // We need to import all entity classes
239
+ const files = fs.readdirSync('${modelsDir}').filter(f => f.endsWith('.ts') && f !== 'test-typeorm-models.ts');
240
+ const entities = files.map(f => require(path.join('${modelsDir}', f))[path.basename(f, '.ts')]);
241
+
242
+ const dataSource = new DataSource({
243
+ type: config.type as any,
244
+ host: config.host,
245
+ port: config.port,
246
+ username: config.username,
247
+ password: config.password,
248
+ database: config.database,
249
+ entities: entities,
250
+ synchronize: false,
251
+ logging: false,
252
+ });
253
+
254
+ async function run() {
255
+ try {
256
+ await dataSource.initialize();
257
+ console.log('Data Source has been initialized!');
258
+
259
+ for (const entity of entities) {
260
+ const metadata = dataSource.getMetadata(entity);
261
+ const tableName = metadata.tableName;
262
+ console.log(\`Testing entity: \${metadata.name} (Table: \${tableName})\`);
263
+
264
+ try {
265
+ const repo = dataSource.getRepository(entity);
266
+ const count = await repo.count();
267
+ console.log(\`✅ \${metadata.name}: Count query successful (Rows: \${count})\`);
268
+
269
+ const item = await repo.findOne({ where: {} });
270
+ if (item) {
271
+ console.log(\` Sample data: \${JSON.stringify(item)}\`);
272
+ }
273
+ } catch (err) {
274
+ console.error(\`❌ \${metadata.name}: Query failed\`, err);
275
+ }
276
+ }
277
+
278
+ } catch (error) {
279
+ console.error('Error during Data Source initialization', error);
280
+ process.exit(1);
281
+ } finally {
282
+ if (dataSource.isInitialized) {
283
+ await dataSource.destroy();
284
+ }
285
+ }
286
+ }
287
+
288
+ run();
289
+ `;
290
+ (0, fs_1.writeFileSync)(testFile, script);
291
+ console.log(`Running test script: ${testFile}`);
292
+ try {
293
+ (0, child_process_1.execSync)(`npx ts-node "${testFile}"`, { stdio: 'inherit' });
294
+ }
295
+ finally {
296
+ if ((0, fs_1.existsSync)(testFile)) {
297
+ (0, fs_1.unlinkSync)(testFile);
298
+ }
299
+ }
300
+ }
301
+ async testPrisma(modelsDir) {
302
+ console.log('Running prisma generate...');
303
+ const schemaPath = (0, path_1.join)(modelsDir, 'schema.prisma');
304
+ if (!(0, fs_1.existsSync)(schemaPath)) {
305
+ throw new Error(`schema.prisma not found in ${modelsDir}`);
306
+ }
307
+ try {
308
+ (0, child_process_1.execSync)(`npx prisma generate --schema="${schemaPath}"`, { stdio: 'inherit' });
309
+ }
310
+ catch (e) {
311
+ console.error('Failed to generate prisma client');
312
+ throw e;
313
+ }
314
+ const testFile = (0, path_1.join)(modelsDir, 'test-prisma-models.ts');
315
+ const script = `
316
+ import { PrismaClient } from '@prisma/client';
317
+
318
+ const prisma = new PrismaClient();
319
+
320
+ async function run() {
321
+ try {
322
+ await prisma.$connect();
323
+ console.log('Connected to database via Prisma');
324
+
325
+ // Get all model names from Prisma Client internals (dmmf)
326
+ // Accessing internal property _dmmf
327
+ // @ts-ignore
328
+ const models = prisma._dmmf.datamodel.models;
329
+
330
+ for (const model of models) {
331
+ const modelName = model.name;
332
+ console.log(\`Testing model: \${modelName}\`);
333
+
334
+ try {
335
+ // @ts-ignore
336
+ const delegate = prisma[modelName.toLowerCase()]; // Prisma client uses lowercase or camelCase? Usually lowerCamelCase
337
+
338
+ if (!delegate) {
339
+ // Try exact name if needed
340
+ // @ts-ignore
341
+ delegate = prisma[modelName];
342
+ }
343
+
344
+ if (delegate) {
345
+ const count = await delegate.count();
346
+ console.log(\`✅ \${modelName}: Count query successful (Rows: \${count})\`);
347
+
348
+ const item = await delegate.findFirst();
349
+ if (item) {
350
+ console.log(\` Sample data: \${JSON.stringify(item)}\`);
351
+ }
352
+ } else {
353
+ console.warn(\`⚠️ Could not find delegate for \${modelName}\`);
354
+ }
355
+ } catch (err) {
356
+ console.error(\`❌ \${modelName}: Query failed\`, err);
357
+ }
358
+ }
359
+
360
+ } catch (error) {
361
+ console.error('Prisma error:', error);
362
+ process.exit(1);
363
+ } finally {
364
+ await prisma.$disconnect();
365
+ }
366
+ }
367
+
368
+ run();
369
+ `;
370
+ (0, fs_1.writeFileSync)(testFile, script);
371
+ console.log(`Running test script: ${testFile}`);
372
+ try {
373
+ (0, child_process_1.execSync)(`npx ts-node "${testFile}"`, { stdio: 'inherit' });
374
+ }
375
+ finally {
376
+ if ((0, fs_1.existsSync)(testFile)) {
377
+ (0, fs_1.unlinkSync)(testFile);
378
+ }
379
+ }
380
+ }
381
+ }
382
+ exports.ModelTester = ModelTester;
383
+ //# sourceMappingURL=ModelTester.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelTester.js","sourceRoot":"","sources":["../../src/testing/ModelTester.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemastersolutions/db-utility",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "description": "Database utility for migrations, seeders, factories, introspection and more...",
5
5
  "files": [
6
6
  "dist",