@zyno-io/dk-server-foundation 26.317.337 → 26.318.1841

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.
@@ -1 +1 @@
1
- {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../../src/http/cors.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEpF,eAAO,MAAM,WAAW,eAAwB,CAAC;AAEjD,qBAAa,oBAAoB;aACD,OAAO,EAAE,eAAe,EAAE;gBAA1B,OAAO,EAAE,eAAe,EAAE;CACzD;AAED,qBAAa,eAAe;IACxB,KAAK,EAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,qBAAa,QAAQ;IACjB,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;CAIxF;AAED,qBAAa,kBAAkB;aAIC,OAAO,EAAE,eAAe;IAHpD,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IACpD,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;gBAE3B,OAAO,EAAE,eAAe;CAgBvD;AAED,qBAAa,gBAAgB;IAIrB,SAAS,CAAC,MAAM,EAAE,UAAU;IAC5B,SAAS,CAAC,gBAAgB,EAAE,oBAAoB;IAJpD,WAAW,EAAE,kBAAkB,EAAE,CAAC;gBAGpB,MAAM,EAAE,UAAU,EAClB,gBAAgB,EAAE,oBAAoB;IAY9C,OAAO,CAAC,KAAK,EAAE,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAYhE,aAAa,CAAC,KAAK,EAAE,OAAO,YAAY,CAAC,eAAe,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9E,UAAU,CAAC,KAAK,EAAE,OAAO,YAAY,CAAC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5E,OAAO,CAAC,sBAAsB;IA6B9B,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,sBAAsB;CAMjC"}
1
+ {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../../src/http/cors.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEpF,eAAO,MAAM,WAAW,eAAwB,CAAC;AAEjD,qBAAa,oBAAoB;aACD,OAAO,EAAE,eAAe,EAAE;gBAA1B,OAAO,EAAE,eAAe,EAAE;CACzD;AAED,qBAAa,eAAe;IACxB,KAAK,EAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,qBAAa,QAAQ;IACjB,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;CAIxF;AAED,qBAAa,kBAAkB;aAIC,OAAO,EAAE,eAAe;IAHpD,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IACpD,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;gBAE3B,OAAO,EAAE,eAAe;CAgBvD;AAED,qBAAa,gBAAgB;IAIrB,SAAS,CAAC,MAAM,EAAE,UAAU;IAC5B,SAAS,CAAC,gBAAgB,EAAE,oBAAoB;IAJpD,WAAW,EAAE,kBAAkB,EAAE,CAAC;gBAGpB,MAAM,EAAE,UAAU,EAClB,gBAAgB,EAAE,oBAAoB;IAY9C,OAAO,CAAC,KAAK,EAAE,OAAO,YAAY,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAYhE,aAAa,CAAC,KAAK,EAAE,OAAO,YAAY,CAAC,eAAe,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9E,UAAU,CAAC,KAAK,EAAE,OAAO,YAAY,CAAC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5E,OAAO,CAAC,sBAAsB;IA+B9B,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,sBAAsB;CAMjC"}
@@ -107,6 +107,7 @@ class HttpCorsListener {
107
107
  return null;
108
108
  if (!request.url)
109
109
  return null;
110
+ const urlPath = request.url.split('?')[0];
110
111
  return this.descriptors.find(__assignType(descriptor => {
111
112
  const hostMatches = descriptor.options.hosts.some(__assignType(host => {
112
113
  if (host === '*') {
@@ -120,9 +121,9 @@ class HttpCorsListener {
120
121
  const patchMatches = !descriptor.options.paths ||
121
122
  descriptor.options.paths.some(__assignType(path => {
122
123
  if (path instanceof RegExp) {
123
- return path.test(request.url);
124
+ return path.test(urlPath);
124
125
  }
125
- return request.url.startsWith(path);
126
+ return urlPath.startsWith(path);
126
127
  }, ['path', '', 'P"2!"/"']));
127
128
  return hostMatches && patchMatches;
128
129
  }, ['descriptor', '', 'P"2!"/"']));
@@ -1 +1 @@
1
- {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../../src/http/cors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../../src/http/cors.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export interface ITestingFacadeOptions {
10
10
  enableDatabase?: boolean;
11
11
  enableMigrations?: boolean;
12
12
  autoSeedData?: boolean;
13
+ useSavepoints?: boolean;
13
14
  databasePrefix?: string;
14
15
  dbAdapter?: TestDbAdapter;
15
16
  onBeforeStart?: (facade: TestingFacade) => Promise<void>;
@@ -25,9 +26,13 @@ export declare class TestingFacade<A extends RootModuleDefinition = RootModuleDe
25
26
  startTs: number;
26
27
  databaseName?: string;
27
28
  dbAdapter: TestDbAdapter;
29
+ savepointIsolationActive: boolean;
28
30
  private stopped;
29
31
  private httpServer?;
32
+ private savepointConnection?;
33
+ private savepointCleanup?;
30
34
  constructor(app: App<A>, options?: ITestingFacadeOptions);
35
+ private get shouldUseSavepoints();
31
36
  start(): Promise<void>;
32
37
  stop(): Promise<void>;
33
38
  /**
@@ -38,6 +43,21 @@ export declare class TestingFacade<A extends RootModuleDefinition = RootModuleDe
38
43
  truncateTables(): Promise<void>;
39
44
  runMigrations(): Promise<void>;
40
45
  resetToSeed(): Promise<void>;
46
+ /**
47
+ * Savepoint isolation: instead of truncating all tables and re-seeding between
48
+ * tests, we wrap all test activity in a transaction and use SAVEPOINT/ROLLBACK TO
49
+ * to restore the database to its post-seed state. This is dramatically faster than
50
+ * TRUNCATE on large schemas.
51
+ *
52
+ * How it works:
53
+ * 1. Seed data is loaded within a transaction on a dedicated connection
54
+ * 2. A savepoint (after_seed) captures the post-seed state
55
+ * 3. The connection pool is hijacked so all queries use this connection
56
+ * 4. App-level transactions (db.transaction()) become nested savepoints
57
+ * 5. Between tests, ROLLBACK TO SAVEPOINT restores the seed state instantly
58
+ */
59
+ private initSavepointIsolation;
60
+ private teardownSavepointIsolation;
41
61
  }
42
62
  type TestingAppOptions<C> = Omit<CreateAppOptions<any>, 'config'> & {
43
63
  config?: ClassType<C>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"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"}
@@ -40,7 +40,7 @@ function getTestDbAdapter() {
40
40
  return 'mysql';
41
41
  }
42
42
  getTestDbAdapter.__type = [() => __ΩTestDbAdapter, 'getTestDbAdapter', 'Pn!/"'];
43
- const __ΩITestingFacadeOptions = ['enableDatabase', 'enableMigrations', 'autoSeedData', 'databasePrefix', () => __ΩTestDbAdapter, 'dbAdapter', () => TestingFacade, 'facade', '', 'onBeforeStart', () => TestingFacade, 'onStart', () => TestingFacade, 'onBeforeStop', () => TestingFacade, 'onStop', () => TestingFacade, 'seedData', () => __ΩRecord, 'defaultTestHeaders', 'ITestingFacadeOptions', 'P)4!8)4"8)4#8&4$8n%4&8PP7\'2($`/)4*8PP7+2($`/)4,8PP7-2($`/)4.8PP7/2($`/)408PP712($`/)428&&o3#448Mw5y'];
43
+ const __ΩITestingFacadeOptions = ['enableDatabase', 'enableMigrations', 'autoSeedData', 'useSavepoints', 'databasePrefix', () => __ΩTestDbAdapter, 'dbAdapter', () => TestingFacade, 'facade', '', 'onBeforeStart', () => TestingFacade, 'onStart', () => TestingFacade, 'onBeforeStop', () => TestingFacade, 'onStop', () => TestingFacade, 'seedData', () => __ΩRecord, 'defaultTestHeaders', 'ITestingFacadeOptions', 'P)4!8)4"8)4#8)4$8&4%8n&4\'8PP7(2)$`/*4+8PP7,2)$`/*4-8PP7.2)$`/*4/8PP702)$`/*418PP722)$`/*438&&o4#458Mw6y'];
44
44
  exports.__ΩITestingFacadeOptions = __ΩITestingFacadeOptions;
45
45
  class TestingFacade extends framework_1.TestingFacade {
46
46
  constructor(app, options = {}) {
@@ -48,9 +48,15 @@ class TestingFacade extends framework_1.TestingFacade {
48
48
  this.options = options;
49
49
  this.sql = new sql_1.SqlTestingHelper();
50
50
  this.startTs = 0;
51
+ this.savepointIsolationActive = false;
51
52
  this.stopped = false;
52
53
  this.dbAdapter = options.dbAdapter ?? getTestDbAdapter();
53
54
  }
55
+ get shouldUseSavepoints() {
56
+ if (this.options?.useSavepoints !== undefined)
57
+ return this.options.useSavepoints;
58
+ return !!this.options?.enableDatabase;
59
+ }
54
60
  async start() {
55
61
  if (this.options?.enableDatabase) {
56
62
  await this.createDatabase();
@@ -86,7 +92,7 @@ class TestingFacade extends framework_1.TestingFacade {
86
92
  await this.runMigrations();
87
93
  await this.truncateTables();
88
94
  }
89
- if (this.options?.autoSeedData) {
95
+ if (!this.shouldUseSavepoints && this.options?.autoSeedData) {
90
96
  await this.options?.seedData?.(this);
91
97
  }
92
98
  }
@@ -101,6 +107,9 @@ class TestingFacade extends framework_1.TestingFacade {
101
107
  return;
102
108
  this.stopped = true;
103
109
  await this.options?.onBeforeStop?.(this);
110
+ if (this.savepointIsolationActive) {
111
+ await this.teardownSavepointIsolation();
112
+ }
104
113
  // if the server is running for too short of a time, the database handshake
105
114
  // gets interrupted and the client hangs due to poor behaivor. thus,
106
115
  // we ensure we wait a minimum duration prior to telling the server to shut down.
@@ -247,12 +256,121 @@ class TestingFacade extends framework_1.TestingFacade {
247
256
  async resetToSeed() {
248
257
  if (!this.options?.enableDatabase)
249
258
  return;
259
+ if (this.shouldUseSavepoints) {
260
+ if (!this.savepointIsolationActive) {
261
+ // Lazily initialize savepoint isolation on first resetToSeed call.
262
+ // This ensures tables exist (e.g. createTables() called after start()).
263
+ await this.initSavepointIsolation();
264
+ }
265
+ else {
266
+ await this.savepointConnection.run('ROLLBACK TO SAVEPOINT after_seed');
267
+ }
268
+ return;
269
+ }
250
270
  await this.truncateTables();
251
271
  await this.options?.seedData?.(this);
252
272
  }
273
+ /**
274
+ * Savepoint isolation: instead of truncating all tables and re-seeding between
275
+ * tests, we wrap all test activity in a transaction and use SAVEPOINT/ROLLBACK TO
276
+ * to restore the database to its post-seed state. This is dramatically faster than
277
+ * TRUNCATE on large schemas.
278
+ *
279
+ * How it works:
280
+ * 1. Seed data is loaded within a transaction on a dedicated connection
281
+ * 2. A savepoint (after_seed) captures the post-seed state
282
+ * 3. The connection pool is hijacked so all queries use this connection
283
+ * 4. App-level transactions (db.transaction()) become nested savepoints
284
+ * 5. Between tests, ROLLBACK TO SAVEPOINT restores the seed state instantly
285
+ */
286
+ async initSavepointIsolation() {
287
+ const databases = this.app.get(orm_1.DatabaseRegistry).getDatabases();
288
+ if (databases.length === 0)
289
+ return;
290
+ const db = databases[0];
291
+ const adapter = db.adapter;
292
+ const pool = adapter.connectionPool;
293
+ // Get a connection and start a wrapping transaction
294
+ const conn = await pool.getConnection();
295
+ this.savepointConnection = conn;
296
+ await conn.run('START TRANSACTION');
297
+ // Seed data within the transaction
298
+ if (this.options?.seedData) {
299
+ await this.options.seedData(this);
300
+ }
301
+ // Create the savepoint we'll rollback to between tests
302
+ await conn.run('SAVEPOINT after_seed');
303
+ // Store originals for cleanup
304
+ const origGetConnection = pool.getConnection.bind(pool);
305
+ const origRelease = conn.release.bind(conn);
306
+ let spCounter = 0;
307
+ // Hijack getConnection to always return our held connection.
308
+ // Transaction begin/commit/rollback are patched per-instance (not on the
309
+ // prototype) so that multiple facades can coexist safely.
310
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
311
+ pool.getConnection = __assignType(async (transaction) => {
312
+ if (transaction) {
313
+ if (transaction.connection)
314
+ return transaction.connection;
315
+ transaction.connection = conn;
316
+ // Patch this transaction instance to use savepoints
317
+ const spName = `sp_${++spCounter}`;
318
+ transaction.begin = async function () {
319
+ if (!this.connection)
320
+ return;
321
+ await this.connection.run(`SAVEPOINT ${spName}`);
322
+ };
323
+ transaction.commit = async function () {
324
+ if (!this.connection)
325
+ return;
326
+ if (this.ended)
327
+ throw new Error('Transaction ended already');
328
+ await this.connection.run(`RELEASE SAVEPOINT ${spName}`);
329
+ this.ended = true;
330
+ };
331
+ transaction.rollback = async function () {
332
+ if (!this.connection)
333
+ return;
334
+ if (this.ended)
335
+ throw new Error('Transaction ended already');
336
+ await this.connection.run(`ROLLBACK TO SAVEPOINT ${spName}`);
337
+ this.ended = true;
338
+ };
339
+ try {
340
+ await transaction.begin();
341
+ }
342
+ catch (error) {
343
+ transaction.ended = true;
344
+ throw new Error('Could not start transaction: ' + error);
345
+ }
346
+ }
347
+ return conn;
348
+ }, ['transaction', '', 'P"2!8"/"']);
349
+ // Make release a no-op so the connection stays held
350
+ conn.release = () => { };
351
+ this.savepointIsolationActive = true;
352
+ this.savepointCleanup = () => {
353
+ pool.getConnection = origGetConnection;
354
+ conn.release = origRelease;
355
+ };
356
+ }
357
+ async teardownSavepointIsolation() {
358
+ if (!this.savepointIsolationActive)
359
+ return;
360
+ this.savepointCleanup();
361
+ try {
362
+ await this.savepointConnection.run('ROLLBACK');
363
+ }
364
+ catch {
365
+ // connection may already be broken
366
+ }
367
+ this.savepointIsolationActive = false;
368
+ this.savepointConnection = undefined;
369
+ this.savepointCleanup = undefined;
370
+ }
253
371
  }
254
372
  exports.TestingFacade = TestingFacade;
255
- TestingFacade.__type = [() => __ΩRootModuleDefinition, 'A', () => app_1.App, () => framework_1.TestingFacade, 'sql', function () { return new sql_1.SqlTestingHelper(); }, 'startTs', function () { return 0; }, 'databaseName', () => __ΩTestDbAdapter, 'dbAdapter', 'stopped', function () { return false; }, 'httpServer', () => app_1.App, 'app', () => __ΩITestingFacadeOptions, 'options', () => ({}), 'constructor', 'start', 'stop', 'createDatabase', 'destroyDatabase', 'truncateTables', 'runMigrations', 'resetToSeed', () => app_1.App, 'TestingFacade', 'n!c"PPe#!7#7$!3%>&\'3\'>(&3)8n*3+)3,;>-!3.8;PPe#!7/20n122:9>3"04P"05P"06P"07P"08P"09P"0:P"0;5Pe"!7<6"w='];
373
+ TestingFacade.__type = [() => __ΩRootModuleDefinition, 'A', () => app_1.App, () => framework_1.TestingFacade, 'sql', function () { return new sql_1.SqlTestingHelper(); }, 'startTs', function () { return 0; }, 'databaseName', () => __ΩTestDbAdapter, 'dbAdapter', 'savepointIsolationActive', function () { return false; }, 'stopped', function () { return false; }, 'httpServer', 'savepointConnection', '', 'savepointCleanup', () => app_1.App, 'app', () => __ΩITestingFacadeOptions, 'options', () => ({}), 'constructor', 'start', 'stop', 'createDatabase', 'destroyDatabase', 'truncateTables', 'runMigrations', 'resetToSeed', 'initSavepointIsolation', 'teardownSavepointIsolation', () => app_1.App, 'TestingFacade', 'n!c"PPe#!7#7$!3%>&\'3\'>(&3)8n*3+)3,>-)3.;>/!308;"318;P$/2338;PPe#!7425n627:9>8"09!P"0:P"0;P"0<P"0=P"0>P"0?P"0@P"0A;P"0B;5Pe"!7C6"wD'];
256
374
  const __ΩTestingAppOptions = ['C', () => __ΩOmit, () => __ΩCreateAppOptions, "config", () => __ΩClassType, 'config', 'TestingAppOptions', 'b!P"o#".$o"#Pe#!o%"4&8MKw\'y'];
257
375
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
258
376
  function createTestingFacade(appOptions, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zyno-io/dk-server-foundation",
3
- "version": "26.317.337",
3
+ "version": "26.318.1841",
4
4
  "description": "TypeScript server foundation built on the Deepkit framework",
5
5
  "homepage": "https://github.com/zyno-io/dk-server-foundation#readme",
6
6
  "bugs": {
package/src/http/cors.ts CHANGED
@@ -109,6 +109,8 @@ export class HttpCorsListener {
109
109
  if (!originHeader) return null;
110
110
  if (!request.url) return null;
111
111
 
112
+ const urlPath = request.url.split('?')[0];
113
+
112
114
  return this.descriptors.find(descriptor => {
113
115
  const hostMatches = descriptor.options.hosts.some(host => {
114
116
  if (host === '*') {
@@ -124,9 +126,9 @@ export class HttpCorsListener {
124
126
  !descriptor.options.paths ||
125
127
  descriptor.options.paths.some(path => {
126
128
  if (path instanceof RegExp) {
127
- return path.test(request.url!);
129
+ return path.test(urlPath);
128
130
  }
129
- return request.url!.startsWith(path);
131
+ return urlPath.startsWith(path);
130
132
  });
131
133
 
132
134
  return hostMatches && patchMatches;
@@ -4,6 +4,7 @@ import { ApplicationServer, TestingFacade as BaseTestingFacade } from '@deepkit/
4
4
  import { MySQLDatabaseAdapter } from '@deepkit/mysql';
5
5
  import { DatabaseRegistry } from '@deepkit/orm';
6
6
  import { PostgresDatabaseAdapter } from '@deepkit/postgres';
7
+ import { SQLDatabaseAdapter } from '@deepkit/sql';
7
8
 
8
9
  import { BaseAppConfig, createApp, CreateAppOptions } from '../app';
9
10
  import { globalState } from '../app/state';
@@ -31,6 +32,7 @@ export interface ITestingFacadeOptions {
31
32
  enableDatabase?: boolean;
32
33
  enableMigrations?: boolean;
33
34
  autoSeedData?: boolean;
35
+ useSavepoints?: boolean;
34
36
  databasePrefix?: string;
35
37
  dbAdapter?: TestDbAdapter;
36
38
  onBeforeStart?: (facade: TestingFacade) => Promise<void>;
@@ -46,8 +48,12 @@ export class TestingFacade<A extends RootModuleDefinition = RootModuleDefinition
46
48
  public startTs = 0;
47
49
  public databaseName?: string;
48
50
  public dbAdapter: TestDbAdapter;
51
+ public savepointIsolationActive = false;
49
52
  private stopped = false;
50
53
  private httpServer?: import('net').Server;
54
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
55
+ private savepointConnection?: any;
56
+ private savepointCleanup?: () => void;
51
57
 
52
58
  constructor(
53
59
  app: App<A>,
@@ -57,6 +63,11 @@ export class TestingFacade<A extends RootModuleDefinition = RootModuleDefinition
57
63
  this.dbAdapter = options.dbAdapter ?? getTestDbAdapter();
58
64
  }
59
65
 
66
+ private get shouldUseSavepoints(): boolean {
67
+ if (this.options?.useSavepoints !== undefined) return this.options.useSavepoints;
68
+ return !!this.options?.enableDatabase;
69
+ }
70
+
60
71
  public async start() {
61
72
  if (this.options?.enableDatabase) {
62
73
  await this.createDatabase();
@@ -99,7 +110,8 @@ export class TestingFacade<A extends RootModuleDefinition = RootModuleDefinition
99
110
  await this.runMigrations();
100
111
  await this.truncateTables();
101
112
  }
102
- if (this.options?.autoSeedData) {
113
+
114
+ if (!this.shouldUseSavepoints && this.options?.autoSeedData) {
103
115
  await this.options?.seedData?.(this);
104
116
  }
105
117
  }
@@ -115,6 +127,10 @@ export class TestingFacade<A extends RootModuleDefinition = RootModuleDefinition
115
127
 
116
128
  await this.options?.onBeforeStop?.(this);
117
129
 
130
+ if (this.savepointIsolationActive) {
131
+ await this.teardownSavepointIsolation();
132
+ }
133
+
118
134
  // if the server is running for too short of a time, the database handshake
119
135
  // gets interrupted and the client hangs due to poor behaivor. thus,
120
136
  // we ensure we wait a minimum duration prior to telling the server to shut down.
@@ -260,9 +276,124 @@ export class TestingFacade<A extends RootModuleDefinition = RootModuleDefinition
260
276
 
261
277
  public async resetToSeed() {
262
278
  if (!this.options?.enableDatabase) return;
279
+
280
+ if (this.shouldUseSavepoints) {
281
+ if (!this.savepointIsolationActive) {
282
+ // Lazily initialize savepoint isolation on first resetToSeed call.
283
+ // This ensures tables exist (e.g. createTables() called after start()).
284
+ await this.initSavepointIsolation();
285
+ } else {
286
+ await this.savepointConnection.run('ROLLBACK TO SAVEPOINT after_seed');
287
+ }
288
+ return;
289
+ }
290
+
263
291
  await this.truncateTables();
264
292
  await this.options?.seedData?.(this);
265
293
  }
294
+
295
+ /**
296
+ * Savepoint isolation: instead of truncating all tables and re-seeding between
297
+ * tests, we wrap all test activity in a transaction and use SAVEPOINT/ROLLBACK TO
298
+ * to restore the database to its post-seed state. This is dramatically faster than
299
+ * TRUNCATE on large schemas.
300
+ *
301
+ * How it works:
302
+ * 1. Seed data is loaded within a transaction on a dedicated connection
303
+ * 2. A savepoint (after_seed) captures the post-seed state
304
+ * 3. The connection pool is hijacked so all queries use this connection
305
+ * 4. App-level transactions (db.transaction()) become nested savepoints
306
+ * 5. Between tests, ROLLBACK TO SAVEPOINT restores the seed state instantly
307
+ */
308
+ private async initSavepointIsolation() {
309
+ const databases = this.app.get(DatabaseRegistry).getDatabases();
310
+ if (databases.length === 0) return;
311
+
312
+ const db = databases[0];
313
+ const adapter = db.adapter as SQLDatabaseAdapter;
314
+ const pool = adapter.connectionPool;
315
+
316
+ // Get a connection and start a wrapping transaction
317
+ const conn = await pool.getConnection();
318
+ this.savepointConnection = conn;
319
+
320
+ await conn.run('START TRANSACTION');
321
+
322
+ // Seed data within the transaction
323
+ if (this.options?.seedData) {
324
+ await this.options.seedData(this);
325
+ }
326
+
327
+ // Create the savepoint we'll rollback to between tests
328
+ await conn.run('SAVEPOINT after_seed');
329
+
330
+ // Store originals for cleanup
331
+ const origGetConnection = pool.getConnection.bind(pool);
332
+ const origRelease = conn.release.bind(conn);
333
+
334
+ let spCounter = 0;
335
+
336
+ // Hijack getConnection to always return our held connection.
337
+ // Transaction begin/commit/rollback are patched per-instance (not on the
338
+ // prototype) so that multiple facades can coexist safely.
339
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
340
+ pool.getConnection = async (transaction?: any) => {
341
+ if (transaction) {
342
+ if (transaction.connection) return transaction.connection;
343
+ transaction.connection = conn;
344
+
345
+ // Patch this transaction instance to use savepoints
346
+ const spName = `sp_${++spCounter}`;
347
+ transaction.begin = async function () {
348
+ if (!this.connection) return;
349
+ await this.connection.run(`SAVEPOINT ${spName}`);
350
+ };
351
+ transaction.commit = async function () {
352
+ if (!this.connection) return;
353
+ if (this.ended) throw new Error('Transaction ended already');
354
+ await this.connection.run(`RELEASE SAVEPOINT ${spName}`);
355
+ this.ended = true;
356
+ };
357
+ transaction.rollback = async function () {
358
+ if (!this.connection) return;
359
+ if (this.ended) throw new Error('Transaction ended already');
360
+ await this.connection.run(`ROLLBACK TO SAVEPOINT ${spName}`);
361
+ this.ended = true;
362
+ };
363
+
364
+ try {
365
+ await transaction.begin();
366
+ } catch (error) {
367
+ transaction.ended = true;
368
+ throw new Error('Could not start transaction: ' + error);
369
+ }
370
+ }
371
+ return conn;
372
+ };
373
+
374
+ // Make release a no-op so the connection stays held
375
+ conn.release = () => {};
376
+
377
+ this.savepointIsolationActive = true;
378
+ this.savepointCleanup = () => {
379
+ pool.getConnection = origGetConnection;
380
+ conn.release = origRelease;
381
+ };
382
+ }
383
+
384
+ private async teardownSavepointIsolation() {
385
+ if (!this.savepointIsolationActive) return;
386
+
387
+ this.savepointCleanup!();
388
+ try {
389
+ await this.savepointConnection.run('ROLLBACK');
390
+ } catch {
391
+ // connection may already be broken
392
+ }
393
+ this.savepointIsolationActive = false;
394
+ this.savepointConnection = undefined;
395
+ this.savepointCleanup = undefined;
396
+ }
266
397
  }
267
398
 
268
399
  // eslint-disable-next-line @typescript-eslint/no-explicit-any