@studiosonrai/nestjs-migrations 1.1.0 → 1.3.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.
@@ -0,0 +1,307 @@
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
+ const testing_1 = require("@nestjs/testing");
37
+ const typeorm_1 = require("typeorm");
38
+ const migration_service_1 = require("./migration.service");
39
+ const types_1 = require("./types");
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const os = __importStar(require("os"));
43
+ const dotenv_1 = require("dotenv");
44
+ (0, dotenv_1.config)();
45
+ describe('MigrationService Integration (Real DB)', () => {
46
+ let service;
47
+ let dataSource;
48
+ let tempDir;
49
+ const MIGRATION_TABLE = 'migrations_service_test';
50
+ const mockOptions = (dir, schema = 'dbo') => ({
51
+ migrationsDir: dir,
52
+ autoRun: true,
53
+ verbose: false,
54
+ schema,
55
+ });
56
+ beforeAll(async () => {
57
+ dataSource = new typeorm_1.DataSource({
58
+ type: 'mssql',
59
+ host: process.env.DB_HOST || 'localhost',
60
+ port: parseInt(process.env.DB_PORT || '1433', 10),
61
+ username: process.env.DB_USERNAME || 'sa',
62
+ password: process.env.DB_PASSWORD || 'p3FauyT9iv9ygHXE6txT',
63
+ database: process.env.DB_DATABASE || 'nest-migrations-ci',
64
+ extra: {
65
+ trustServerCertificate: true,
66
+ },
67
+ synchronize: false,
68
+ logging: false,
69
+ });
70
+ await dataSource.initialize();
71
+ tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'migration-service-test-'));
72
+ });
73
+ afterAll(async () => {
74
+ if (dataSource?.isInitialized) {
75
+ await dataSource.query(`IF OBJECT_ID('dbo.${MIGRATION_TABLE}', 'U') IS NOT NULL DROP TABLE dbo.${MIGRATION_TABLE}`);
76
+ await dataSource.destroy();
77
+ }
78
+ if (tempDir && fs.existsSync(tempDir)) {
79
+ fs.rmSync(tempDir, { recursive: true, force: true });
80
+ }
81
+ });
82
+ beforeEach(async () => {
83
+ if (!dataSource?.isInitialized)
84
+ return;
85
+ await dataSource.query(`IF OBJECT_ID('dbo.${MIGRATION_TABLE}', 'U') IS NOT NULL DELETE FROM dbo.${MIGRATION_TABLE}`);
86
+ const objectsToDrop = [
87
+ { name: 'dbo.ServiceTest', type: 'U' },
88
+ { name: 'dbo.NoAutoTable', type: 'U' },
89
+ { name: 'dbo.ManualTable', type: 'U' },
90
+ { name: 'dbo.ManualView', type: 'V' },
91
+ { name: 'dbo.StatusTable', type: 'U' }
92
+ ];
93
+ for (const obj of objectsToDrop) {
94
+ await dataSource.query(`IF OBJECT_ID('${obj.name}', '${obj.type}') IS NOT NULL ${obj.type === 'V' ? 'DROP VIEW' : 'DROP TABLE'} ${obj.name}`);
95
+ }
96
+ if (fs.existsSync(tempDir)) {
97
+ const files = fs.readdirSync(tempDir);
98
+ for (const file of files) {
99
+ fs.unlinkSync(path.join(tempDir, file));
100
+ }
101
+ }
102
+ const module = await testing_1.Test.createTestingModule({
103
+ providers: [
104
+ migration_service_1.MigrationService,
105
+ {
106
+ provide: types_1.MIGRATION_MODULE_OPTIONS,
107
+ useValue: { ...mockOptions(tempDir), tableName: 'migrations_service_test' },
108
+ },
109
+ {
110
+ provide: typeorm_1.DataSource,
111
+ useValue: dataSource,
112
+ },
113
+ ],
114
+ }).compile();
115
+ service = module.get(migration_service_1.MigrationService);
116
+ });
117
+ function createMigrationFile(name, content) {
118
+ fs.writeFileSync(path.join(tempDir, name), content);
119
+ }
120
+ it('should be defined', () => {
121
+ expect(service).toBeDefined();
122
+ });
123
+ describe('onModuleInit', () => {
124
+ it('should run migrations automatically when autoRun is true', async () => {
125
+ if (!dataSource?.isInitialized)
126
+ return;
127
+ createMigrationFile('V1__Init.sql', 'CREATE TABLE dbo.ServiceTest (Id INT);');
128
+ try {
129
+ await service.onModuleInit();
130
+ const tableExists = await dataSource.query("SELECT COUNT(*) as count FROM sys.tables WHERE name='ServiceTest' AND schema_id = SCHEMA_ID('dbo')");
131
+ expect(tableExists[0].count).toBe(1);
132
+ }
133
+ finally {
134
+ await dataSource.query("IF OBJECT_ID('dbo.ServiceTest', 'U') IS NOT NULL DROP TABLE dbo.ServiceTest");
135
+ }
136
+ });
137
+ it('should not run migrations when autoRun is false', async () => {
138
+ if (!dataSource?.isInitialized)
139
+ return;
140
+ const module = await testing_1.Test.createTestingModule({
141
+ providers: [
142
+ migration_service_1.MigrationService,
143
+ {
144
+ provide: types_1.MIGRATION_MODULE_OPTIONS,
145
+ useValue: { ...mockOptions(tempDir), autoRun: false, tableName: 'migrations_service_test' },
146
+ },
147
+ {
148
+ provide: typeorm_1.DataSource,
149
+ useValue: dataSource,
150
+ },
151
+ ],
152
+ }).compile();
153
+ const serviceNoAuto = module.get(migration_service_1.MigrationService);
154
+ createMigrationFile('V1__NoAuto.sql', 'CREATE TABLE dbo.NoAutoTable (Id INT);');
155
+ await serviceNoAuto.onModuleInit();
156
+ const tableExists = await dataSource.query("SELECT COUNT(*) as count FROM sys.tables WHERE name='NoAutoTable' AND schema_id = SCHEMA_ID('dbo')");
157
+ expect(tableExists[0].count).toBe(0);
158
+ });
159
+ });
160
+ describe('runMigrations', () => {
161
+ it('should apply pending migrations and return result', async () => {
162
+ if (!dataSource?.isInitialized)
163
+ return;
164
+ createMigrationFile('V1__Manual.sql', 'CREATE TABLE dbo.ManualTable (Id INT);');
165
+ createMigrationFile('R__View.sql', 'CREATE VIEW dbo.ManualView AS SELECT 1 as val;');
166
+ try {
167
+ const result = await service.runMigrations();
168
+ expect(result.success).toBe(true);
169
+ expect(result.appliedMigrations).toBe(1);
170
+ expect(result.rerunnableMigrations).toBe(1);
171
+ }
172
+ finally {
173
+ await dataSource.query("IF OBJECT_ID('dbo.ManualView', 'V') IS NOT NULL DROP VIEW dbo.ManualView");
174
+ await dataSource.query("IF OBJECT_ID('dbo.ManualTable', 'U') IS NOT NULL DROP TABLE dbo.ManualTable");
175
+ }
176
+ });
177
+ });
178
+ describe('getStatus', () => {
179
+ it('should report correct migration status', async () => {
180
+ if (!dataSource?.isInitialized)
181
+ return;
182
+ createMigrationFile('V1__Status.sql', 'SELECT 1;');
183
+ createMigrationFile('V2__StatusPending.sql', 'SELECT 1;');
184
+ await service.runMigrations({ dryRun: false });
185
+ const status = await service.getStatus();
186
+ expect(status.applied).toBe(2);
187
+ expect(status.pending).toBe(0);
188
+ });
189
+ });
190
+ describe('Schema Support', () => {
191
+ let testSchema;
192
+ let schemaTempDir;
193
+ beforeEach(async () => {
194
+ testSchema = 'svc_schema_' + Date.now();
195
+ schemaTempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'svc-schema-test-'));
196
+ try {
197
+ await dataSource.query(`IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = '${testSchema}') EXEC('CREATE SCHEMA ${testSchema}');`);
198
+ }
199
+ catch (e) {
200
+ }
201
+ });
202
+ afterEach(async () => {
203
+ if (dataSource?.isInitialized && testSchema) {
204
+ try {
205
+ await dataSource.query(`IF OBJECT_ID('${testSchema}.migrations_service_test', 'U') IS NOT NULL DROP TABLE ${testSchema}.migrations_service_test`);
206
+ await dataSource.query(`DROP SCHEMA ${testSchema}`);
207
+ }
208
+ catch (e) {
209
+ }
210
+ }
211
+ if (schemaTempDir && fs.existsSync(schemaTempDir)) {
212
+ fs.rmSync(schemaTempDir, { recursive: true, force: true });
213
+ }
214
+ });
215
+ it('should use dbo schema by default', async () => {
216
+ if (!dataSource?.isInitialized)
217
+ return;
218
+ const schema = service.migrationCore.schema ?? 'dbo';
219
+ expect(schema).toBe('dbo');
220
+ });
221
+ it('should accept and use custom schema from options', async () => {
222
+ if (!dataSource?.isInitialized)
223
+ return;
224
+ const module = await testing_1.Test.createTestingModule({
225
+ providers: [
226
+ migration_service_1.MigrationService,
227
+ {
228
+ provide: types_1.MIGRATION_MODULE_OPTIONS,
229
+ useValue: {
230
+ ...mockOptions(schemaTempDir, testSchema),
231
+ tableName: 'migrations_service_test',
232
+ },
233
+ },
234
+ {
235
+ provide: typeorm_1.DataSource,
236
+ useValue: dataSource,
237
+ },
238
+ ],
239
+ }).compile();
240
+ const schemaService = module.get(migration_service_1.MigrationService);
241
+ const schema = schemaService.migrationCore.schema;
242
+ expect(schema).toBe(testSchema);
243
+ });
244
+ it('should create migration table in custom schema', async () => {
245
+ if (!dataSource?.isInitialized)
246
+ return;
247
+ const module = await testing_1.Test.createTestingModule({
248
+ providers: [
249
+ migration_service_1.MigrationService,
250
+ {
251
+ provide: types_1.MIGRATION_MODULE_OPTIONS,
252
+ useValue: {
253
+ ...mockOptions(schemaTempDir, testSchema),
254
+ tableName: 'migrations_service_test',
255
+ autoRun: false,
256
+ },
257
+ },
258
+ {
259
+ provide: typeorm_1.DataSource,
260
+ useValue: dataSource,
261
+ },
262
+ ],
263
+ }).compile();
264
+ const schemaService = module.get(migration_service_1.MigrationService);
265
+ fs.writeFileSync(path.join(schemaTempDir, 'V1__SchemaTest.sql'), 'SELECT 1;');
266
+ await schemaService.runMigrations();
267
+ const tableExists = await dataSource.query(`
268
+ SELECT COUNT(*) as count FROM sys.tables
269
+ WHERE name='migrations_service_test' AND schema_id = SCHEMA_ID('${testSchema}')
270
+ `);
271
+ expect(tableExists[0].count).toBe(1);
272
+ });
273
+ it('should log schema name in verbose mode', async () => {
274
+ if (!dataSource?.isInitialized)
275
+ return;
276
+ const module = await testing_1.Test.createTestingModule({
277
+ providers: [
278
+ migration_service_1.MigrationService,
279
+ {
280
+ provide: types_1.MIGRATION_MODULE_OPTIONS,
281
+ useValue: {
282
+ ...mockOptions(schemaTempDir, testSchema),
283
+ tableName: 'migrations_service_test',
284
+ autoRun: false,
285
+ },
286
+ },
287
+ {
288
+ provide: typeorm_1.DataSource,
289
+ useValue: dataSource,
290
+ },
291
+ ],
292
+ }).compile();
293
+ const schemaService = module.get(migration_service_1.MigrationService);
294
+ fs.writeFileSync(path.join(schemaTempDir, 'V1__LogTest.sql'), 'SELECT 1;');
295
+ const consoleSpy = jest.spyOn(console, 'log').mockImplementation();
296
+ try {
297
+ await schemaService.runMigrations({ verbose: true });
298
+ const output = consoleSpy.mock.calls.map((c) => c[0]).join('\n');
299
+ expect(output).toContain(`[${testSchema}]`);
300
+ }
301
+ finally {
302
+ consoleSpy.mockRestore();
303
+ }
304
+ });
305
+ });
306
+ });
307
+ //# sourceMappingURL=migration.service.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.service.spec.js","sourceRoot":"","sources":["../../src/migration.service.spec.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ export interface MigrationModuleOptions {
3
3
  migrationsDir: string;
4
4
  autoRun?: boolean;
5
5
  verbose?: boolean;
6
+ tableName?: string;
7
+ schema?: string;
6
8
  }
7
9
  export interface MigrationModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
8
10
  useFactory: (...args: any[]) => Promise<MigrationModuleOptions> | MigrationModuleOptions;
@@ -18,15 +20,19 @@ export interface MigrationResult {
18
20
  totalMigrations: number;
19
21
  appliedMigrations: number;
20
22
  pendingMigrations: number;
23
+ rerunnableMigrations: number;
21
24
  failedMigration?: string;
22
25
  error?: any;
23
26
  }
24
27
  export interface MigrationRunOptions {
25
28
  dryRun?: boolean;
26
29
  verbose?: boolean;
30
+ tableName?: string;
27
31
  }
28
32
  export interface MigrationCoreOptions {
29
33
  migrationsDir: string;
34
+ tableName?: string;
35
+ schema?: string;
30
36
  }
31
37
  export declare const MIGRATION_MODULE_OPTIONS: unique symbol;
32
38
  export interface AppliedMigration {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAyGa,QAAA,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAyB3E,MAAa,iBAAkB,SAAQ,KAAK;IAExB;IACA;IACA;IAHlB,YACkB,aAAqB,EACrB,YAAoB,EACpB,UAAkB;QAElC,KAAK,CACH,mBAAmB,aAAa,4CAA4C;YAC1E,oBAAoB,YAAY,IAAI;YACpC,oBAAoB,UAAU,IAAI;YAClC,qFAAqF,CACxF,CAAC;QATc,kBAAa,GAAb,aAAa,CAAQ;QACrB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,eAAU,GAAV,UAAU,CAAQ;QAQlC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAdD,8CAcC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAsIa,QAAA,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAyB3E,MAAa,iBAAkB,SAAQ,KAAK;IAExB;IACA;IACA;IAHlB,YACkB,aAAqB,EACrB,YAAoB,EACpB,UAAkB;QAElC,KAAK,CACH,mBAAmB,aAAa,4CAA4C;YAC5E,oBAAoB,YAAY,IAAI;YACpC,oBAAoB,UAAU,IAAI;YAClC,qFAAqF,CACtF,CAAC;QATc,kBAAa,GAAb,aAAa,CAAQ;QACrB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,eAAU,GAAV,UAAU,CAAQ;QAQlC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAdD,8CAcC"}