linkgress-orm 0.4.3 → 0.4.5
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/dist/migration/migration-journal.d.ts +5 -0
- package/dist/migration/migration-journal.d.ts.map +1 -1
- package/dist/migration/migration-journal.js +11 -0
- package/dist/migration/migration-journal.js.map +1 -1
- package/dist/migration/migration-runner.d.ts +4 -0
- package/dist/migration/migration-runner.d.ts.map +1 -1
- package/dist/migration/migration-runner.js +23 -0
- package/dist/migration/migration-runner.js.map +1 -1
- package/dist/query/grouped-query.d.ts +11 -4
- package/dist/query/grouped-query.d.ts.map +1 -1
- package/dist/query/grouped-query.js +124 -61
- package/dist/query/grouped-query.js.map +1 -1
- package/dist/query/query-builder.d.ts.map +1 -1
- package/dist/query/query-builder.js +9 -3
- package/dist/query/query-builder.js.map +1 -1
- package/package.json +1 -1
|
@@ -12,6 +12,11 @@ export declare class MigrationJournal {
|
|
|
12
12
|
private schemaName;
|
|
13
13
|
private qualifiedName;
|
|
14
14
|
constructor(client: DatabaseClient, config?: Pick<MigrationConfig, 'journalTable' | 'journalSchema'>);
|
|
15
|
+
/**
|
|
16
|
+
* Check if the journal table exists in the database without creating it.
|
|
17
|
+
* Used to detect whether the schema has been previously set up.
|
|
18
|
+
*/
|
|
19
|
+
tableExists(): Promise<boolean>;
|
|
15
20
|
/**
|
|
16
21
|
* Ensure the journal table exists in the database.
|
|
17
22
|
* Creates it if it doesn't exist.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-journal.d.ts","sourceRoot":"","sources":["../../src/migration/migration-journal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E;;;;;GAKG;AACH,qBAAa,gBAAgB;IAMzB,OAAO,CAAC,MAAM;IALhB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;gBAGpB,MAAM,EAAE,cAAc,EAC9B,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,GAAG,eAAe,CAAC;IAOlE;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBlC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAOpD;;;OAGG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQnD;;;OAGG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD;;;OAGG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB"}
|
|
1
|
+
{"version":3,"file":"migration-journal.d.ts","sourceRoot":"","sources":["../../src/migration/migration-journal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E;;;;;GAKG;AACH,qBAAa,gBAAgB;IAMzB,OAAO,CAAC,MAAM;IALhB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;gBAGpB,MAAM,EAAE,cAAc,EAC9B,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,GAAG,eAAe,CAAC;IAOlE;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAWrC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBlC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAOpD;;;OAGG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQnD;;;OAGG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD;;;OAGG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB"}
|
|
@@ -14,6 +14,17 @@ class MigrationJournal {
|
|
|
14
14
|
this.schemaName = config?.journalSchema || 'public';
|
|
15
15
|
this.qualifiedName = `"${this.schemaName}"."${this.tableName}"`;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Check if the journal table exists in the database without creating it.
|
|
19
|
+
* Used to detect whether the schema has been previously set up.
|
|
20
|
+
*/
|
|
21
|
+
async tableExists() {
|
|
22
|
+
const result = await this.client.query(`SELECT EXISTS (
|
|
23
|
+
SELECT 1 FROM information_schema.tables
|
|
24
|
+
WHERE table_schema = $1 AND table_name = $2
|
|
25
|
+
) as exists`, [this.schemaName, this.tableName]);
|
|
26
|
+
return result.rows[0]?.exists === true;
|
|
27
|
+
}
|
|
17
28
|
/**
|
|
18
29
|
* Ensure the journal table exists in the database.
|
|
19
30
|
* Creates it if it doesn't exist.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-journal.js","sourceRoot":"","sources":["../../src/migration/migration-journal.ts"],"names":[],"mappings":";;;AAGA;;;;;GAKG;AACH,MAAa,gBAAgB;IAK3B,YACU,MAAsB,EAC9B,MAAgE;QADxD,WAAM,GAAN,MAAM,CAAgB;QAG9B,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,YAAY,IAAI,cAAc,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,aAAa,IAAI,QAAQ,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,SAAS,GAAG,CAAC;IAClE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW;QACf,iCAAiC;QACjC,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACrB,gCAAgC,IAAI,CAAC,UAAU,GAAG,CACnD,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG;mCACmB,IAAI,CAAC,aAAa;;;;;KAKhD,CAAC;QACF,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACpC,wCAAwC,IAAI,CAAC,aAAa,wBAAwB,CACnF,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACpC,iBAAiB,IAAI,CAAC,aAAa,sBAAsB,EACzD,CAAC,QAAQ,CAAC,CACX,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACrB,eAAe,IAAI,CAAC,aAAa,yBAAyB,EAC1D,CAAC,QAAQ,CAAC,CACX,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACrB,eAAe,IAAI,CAAC,aAAa,sBAAsB,EACvD,CAAC,QAAQ,CAAC,CACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"migration-journal.js","sourceRoot":"","sources":["../../src/migration/migration-journal.ts"],"names":[],"mappings":";;;AAGA;;;;;GAKG;AACH,MAAa,gBAAgB;IAK3B,YACU,MAAsB,EAC9B,MAAgE;QADxD,WAAM,GAAN,MAAM,CAAgB;QAG9B,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,YAAY,IAAI,cAAc,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,aAAa,IAAI,QAAQ,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,SAAS,GAAG,CAAC;IAClE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACpC;;;kBAGY,EACZ,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAClC,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW;QACf,iCAAiC;QACjC,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACrB,gCAAgC,IAAI,CAAC,UAAU,GAAG,CACnD,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG;mCACmB,IAAI,CAAC,aAAa;;;;;KAKhD,CAAC;QACF,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACpC,wCAAwC,IAAI,CAAC,aAAa,wBAAwB,CACnF,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACpC,iBAAiB,IAAI,CAAC,aAAa,sBAAsB,EACzD,CAAC,QAAQ,CAAC,CACX,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACrB,eAAe,IAAI,CAAC,aAAa,yBAAyB,EAC1D,CAAC,QAAQ,CAAC,CACX,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACrB,eAAe,IAAI,CAAC,aAAa,sBAAsB,EACvD,CAAC,QAAQ,CAAC,CACX,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF;AAnHD,4CAmHC"}
|
|
@@ -39,6 +39,10 @@ export declare class MigrationRunner {
|
|
|
39
39
|
/**
|
|
40
40
|
* Run all pending migrations in chronological order.
|
|
41
41
|
*
|
|
42
|
+
* If the journal table does not exist (fresh database), the schema is
|
|
43
|
+
* created from the model definition first (diff-based), and all existing
|
|
44
|
+
* migration files are recorded as applied.
|
|
45
|
+
*
|
|
42
46
|
* Each migration is executed within a transaction. If a migration fails,
|
|
43
47
|
* the transaction is rolled back and execution stops.
|
|
44
48
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-runner.d.ts","sourceRoot":"","sources":["../../src/migration/migration-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,eAAe;IAOxB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,MAAM;IAPhB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAA4B;gBAGhC,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,eAAe;IAQjC,OAAO,CAAC,GAAG;IAMX
|
|
1
|
+
{"version":3,"file":"migration-runner.d.ts","sourceRoot":"","sources":["../../src/migration/migration-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,eAAe;IAOxB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,MAAM;IAPhB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,MAAM,CAA4B;gBAGhC,EAAE,EAAE,eAAe,EACnB,MAAM,EAAE,eAAe;IAQjC,OAAO,CAAC,GAAG;IAMX;;;;;;;;;;;OAWG;IACG,EAAE,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA4EvC;;;;;;;OAOG;IACG,IAAI,CAAC,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwD1D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAU9C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAU9C;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,IAAI,CAAA;KAAE,EAAE,CAAC;IAcnF;;OAEG;IACH,SAAS,IAAI,eAAe;IAI5B;;OAEG;IACH,UAAU,IAAI,gBAAgB;CAG/B"}
|
|
@@ -45,12 +45,35 @@ class MigrationRunner {
|
|
|
45
45
|
/**
|
|
46
46
|
* Run all pending migrations in chronological order.
|
|
47
47
|
*
|
|
48
|
+
* If the journal table does not exist (fresh database), the schema is
|
|
49
|
+
* created from the model definition first (diff-based), and all existing
|
|
50
|
+
* migration files are recorded as applied.
|
|
51
|
+
*
|
|
48
52
|
* Each migration is executed within a transaction. If a migration fails,
|
|
49
53
|
* the transaction is rolled back and execution stops.
|
|
50
54
|
*
|
|
51
55
|
* @returns Result containing applied, skipped, and failed migrations
|
|
52
56
|
*/
|
|
53
57
|
async up() {
|
|
58
|
+
// Check if journal table exists — if not, this is a fresh database
|
|
59
|
+
const journalExists = await this.journal.tableExists();
|
|
60
|
+
if (!journalExists) {
|
|
61
|
+
this.log('No migration journal found — creating schema from model...');
|
|
62
|
+
await this.db.getSchemaManager().migrate();
|
|
63
|
+
// Create journal table and mark all existing migrations as applied
|
|
64
|
+
await this.journal.ensureTable();
|
|
65
|
+
const allMigrations = await this.loader.loadAllMigrations();
|
|
66
|
+
const result = {
|
|
67
|
+
applied: [],
|
|
68
|
+
skipped: allMigrations.map(m => m.filename),
|
|
69
|
+
};
|
|
70
|
+
for (const migration of allMigrations) {
|
|
71
|
+
await this.journal.recordApplied(migration.filename);
|
|
72
|
+
this.log(` Recorded as applied: ${migration.filename}`);
|
|
73
|
+
}
|
|
74
|
+
this.log(`Schema created. ${allMigrations.length} migration(s) recorded as applied.`);
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
54
77
|
await this.journal.ensureTable();
|
|
55
78
|
const allMigrations = await this.loader.loadAllMigrations();
|
|
56
79
|
const applied = await this.journal.getApplied();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-runner.js","sourceRoot":"","sources":["../../src/migration/migration-runner.ts"],"names":[],"mappings":";;;AAMA,2DAAuD;AACvD,yDAAqD;AAErD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAa,eAAe;IAM1B,YACU,EAAmB,EACnB,MAAuB;QADvB,OAAE,GAAF,EAAE,CAAiB;QACnB,WAAM,GAAN,MAAM,CAAiB;QAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,oCAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,kCAAe,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC;IAC7C,CAAC;IAEO,GAAG,CAAC,OAAe;QACzB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"migration-runner.js","sourceRoot":"","sources":["../../src/migration/migration-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -127,7 +127,8 @@ export declare class GroupedQueryBuilder<TOriginalRow, TGroupingKey> {
|
|
|
127
127
|
private executor?;
|
|
128
128
|
private manualJoins;
|
|
129
129
|
private joinCounter;
|
|
130
|
-
|
|
130
|
+
private schemaRegistry?;
|
|
131
|
+
constructor(schema: TableSchema, client: DatabaseClient, originalSelector: (row: any) => any, groupingKeySelector: (row: TOriginalRow) => TGroupingKey, whereCond?: Condition, executor?: QueryExecutor, manualJoins?: ManualJoinDefinition[], joinCounter?: number, schemaRegistry?: Map<string, TableSchema>);
|
|
131
132
|
/**
|
|
132
133
|
* Select from grouped results
|
|
133
134
|
* The selector receives a GroupedItem with key and aggregate functions
|
|
@@ -163,10 +164,11 @@ export declare class GroupedSelectQueryBuilder<TSelection, TOriginalRow, TGroupi
|
|
|
163
164
|
private executor?;
|
|
164
165
|
private manualJoins;
|
|
165
166
|
private joinCounter;
|
|
167
|
+
private schemaRegistry?;
|
|
166
168
|
constructor(schema: TableSchema, client: DatabaseClient, originalSelector: (row: any) => any, groupingKeySelector: (row: TOriginalRow) => TGroupingKey, resultSelector: (group: GroupedItem<TGroupingKey, TOriginalRow>) => TSelection, whereCond?: Condition, havingCond?: Condition, limit?: number, offset?: number, orderBy?: Array<{
|
|
167
169
|
field: string;
|
|
168
170
|
direction: 'ASC' | 'DESC';
|
|
169
|
-
}>, executor?: QueryExecutor, manualJoins?: ManualJoinDefinition[], joinCounter?: number);
|
|
171
|
+
}>, executor?: QueryExecutor, manualJoins?: ManualJoinDefinition[], joinCounter?: number, schemaRegistry?: Map<string, TableSchema>);
|
|
170
172
|
/**
|
|
171
173
|
* Add HAVING condition (filter groups after aggregation)
|
|
172
174
|
*/
|
|
@@ -310,9 +312,14 @@ export declare class GroupedSelectQueryBuilder<TSelection, TOriginalRow, TGroupi
|
|
|
310
312
|
*/
|
|
311
313
|
private detectAndAddJoinsFromSelection;
|
|
312
314
|
/**
|
|
313
|
-
*
|
|
315
|
+
* Collect all table aliases from a selection
|
|
314
316
|
*/
|
|
315
|
-
private
|
|
317
|
+
private collectTableAliasesFromSelection;
|
|
318
|
+
/**
|
|
319
|
+
* Resolve all navigation joins by finding the correct path through the schema graph.
|
|
320
|
+
* Handles multi-level navigation like task.level.createdBy.
|
|
321
|
+
*/
|
|
322
|
+
private resolveJoinsForTableAliases;
|
|
316
323
|
/**
|
|
317
324
|
* Build HAVING condition SQL - handles aggregate field refs specially
|
|
318
325
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grouped-query.d.ts","sourceRoot":"","sources":["../../src/query/grouped-query.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"grouped-query.d.ts","sourceRoot":"","sources":["../../src/query/grouped-query.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ function createAggregateFieldRef(aggregateType, selector) {
|
|
|
24
24
|
* Provides type-safe access to grouping keys and aggregate functions
|
|
25
25
|
*/
|
|
26
26
|
class GroupedQueryBuilder {
|
|
27
|
-
constructor(schema, client, originalSelector, groupingKeySelector, whereCond, executor, manualJoins, joinCounter) {
|
|
27
|
+
constructor(schema, client, originalSelector, groupingKeySelector, whereCond, executor, manualJoins, joinCounter, schemaRegistry) {
|
|
28
28
|
this.orderByFields = [];
|
|
29
29
|
this.manualJoins = [];
|
|
30
30
|
this.joinCounter = 0;
|
|
@@ -36,13 +36,14 @@ class GroupedQueryBuilder {
|
|
|
36
36
|
this.executor = executor;
|
|
37
37
|
this.manualJoins = manualJoins || [];
|
|
38
38
|
this.joinCounter = joinCounter || 0;
|
|
39
|
+
this.schemaRegistry = schemaRegistry;
|
|
39
40
|
}
|
|
40
41
|
/**
|
|
41
42
|
* Select from grouped results
|
|
42
43
|
* The selector receives a GroupedItem with key and aggregate functions
|
|
43
44
|
*/
|
|
44
45
|
select(selector) {
|
|
45
|
-
return new GroupedSelectQueryBuilder(this.schema, this.client, this.originalSelector, this.groupingKeySelector, selector, this.whereCond, this.havingCond, this.limitValue, this.offsetValue, this.orderByFields, this.executor, this.manualJoins, this.joinCounter);
|
|
46
|
+
return new GroupedSelectQueryBuilder(this.schema, this.client, this.originalSelector, this.groupingKeySelector, selector, this.whereCond, this.havingCond, this.limitValue, this.offsetValue, this.orderByFields, this.executor, this.manualJoins, this.joinCounter, this.schemaRegistry);
|
|
46
47
|
}
|
|
47
48
|
/**
|
|
48
49
|
* Add HAVING condition (filter groups after aggregation)
|
|
@@ -110,11 +111,17 @@ class GroupedQueryBuilder {
|
|
|
110
111
|
// Performance: Use pre-computed relation entries and cached schemas
|
|
111
112
|
const relationEntries = (0, query_builder_1.getRelationEntriesForSchema)(this.schema);
|
|
112
113
|
for (const [relName, relConfig] of relationEntries) {
|
|
113
|
-
|
|
114
|
+
let targetSchema;
|
|
115
|
+
if (this.schemaRegistry) {
|
|
116
|
+
targetSchema = this.schemaRegistry.get(relConfig.targetTable);
|
|
117
|
+
}
|
|
118
|
+
if (!targetSchema) {
|
|
119
|
+
targetSchema = (0, query_builder_1.getTargetSchemaForRelation)(this.schema, relName, relConfig);
|
|
120
|
+
}
|
|
114
121
|
if (relConfig.type === 'many') {
|
|
115
122
|
Object.defineProperty(mock, relName, {
|
|
116
123
|
get: () => {
|
|
117
|
-
return new query_builder_1.CollectionQueryBuilder(relName, relConfig.targetTable, relConfig.foreignKey || relConfig.foreignKeys?.[0] || '', this.schema.name, targetSchema);
|
|
124
|
+
return new query_builder_1.CollectionQueryBuilder(relName, relConfig.targetTable, relConfig.foreignKey || relConfig.foreignKeys?.[0] || '', this.schema.name, targetSchema, this.schemaRegistry);
|
|
118
125
|
},
|
|
119
126
|
enumerable: true,
|
|
120
127
|
configurable: true,
|
|
@@ -123,7 +130,7 @@ class GroupedQueryBuilder {
|
|
|
123
130
|
else {
|
|
124
131
|
Object.defineProperty(mock, relName, {
|
|
125
132
|
get: () => {
|
|
126
|
-
const refBuilder = new query_builder_1.ReferenceQueryBuilder(relName, relConfig.targetTable, relConfig.foreignKeys || [relConfig.foreignKey || ''], relConfig.matches || [], relConfig.isMandatory ?? false, targetSchema);
|
|
133
|
+
const refBuilder = new query_builder_1.ReferenceQueryBuilder(relName, relConfig.targetTable, relConfig.foreignKeys || [relConfig.foreignKey || ''], relConfig.matches || [], relConfig.isMandatory ?? false, targetSchema, this.schemaRegistry, [], this.schema.name);
|
|
127
134
|
return refBuilder.createMockTargetRow();
|
|
128
135
|
},
|
|
129
136
|
enumerable: true,
|
|
@@ -169,7 +176,7 @@ exports.GroupedQueryBuilder = GroupedQueryBuilder;
|
|
|
169
176
|
* Grouped select query builder - result of calling select() on a GroupedQueryBuilder
|
|
170
177
|
*/
|
|
171
178
|
class GroupedSelectQueryBuilder {
|
|
172
|
-
constructor(schema, client, originalSelector, groupingKeySelector, resultSelector, whereCond, havingCond, limit, offset, orderBy, executor, manualJoins, joinCounter) {
|
|
179
|
+
constructor(schema, client, originalSelector, groupingKeySelector, resultSelector, whereCond, havingCond, limit, offset, orderBy, executor, manualJoins, joinCounter, schemaRegistry) {
|
|
173
180
|
this.orderByFields = [];
|
|
174
181
|
this.manualJoins = [];
|
|
175
182
|
this.joinCounter = 0;
|
|
@@ -186,6 +193,7 @@ class GroupedSelectQueryBuilder {
|
|
|
186
193
|
this.executor = executor;
|
|
187
194
|
this.manualJoins = manualJoins || [];
|
|
188
195
|
this.joinCounter = joinCounter || 0;
|
|
196
|
+
this.schemaRegistry = schemaRegistry;
|
|
189
197
|
}
|
|
190
198
|
/**
|
|
191
199
|
* Add HAVING condition (filter groups after aggregation)
|
|
@@ -621,9 +629,10 @@ class GroupedSelectQueryBuilder {
|
|
|
621
629
|
? `"${navJoin.targetSchema}"."${navJoin.targetTable}"`
|
|
622
630
|
: `"${navJoin.targetTable}"`;
|
|
623
631
|
// Build join condition: source.foreignKey = target.match
|
|
632
|
+
const sourceAlias = navJoin.sourceAlias || this.schema.name;
|
|
624
633
|
const joinConditions = navJoin.foreignKeys.map((fk, i) => {
|
|
625
634
|
const targetCol = navJoin.matches[i] || 'id';
|
|
626
|
-
return `${(0, join_utils_1.formatJoinValue)(
|
|
635
|
+
return `${(0, join_utils_1.formatJoinValue)(sourceAlias, fk)} = ${(0, join_utils_1.formatJoinValue)(navJoin.alias, targetCol)}`;
|
|
627
636
|
});
|
|
628
637
|
baseFromClause += `\n${joinType} ${targetTableName} AS "${navJoin.alias}" ON ${joinConditions.join(' AND ')}`;
|
|
629
638
|
}
|
|
@@ -989,11 +998,17 @@ class GroupedSelectQueryBuilder {
|
|
|
989
998
|
// Performance: Use pre-computed relation entries and cached schemas
|
|
990
999
|
const relationEntries = (0, query_builder_1.getRelationEntriesForSchema)(this.schema);
|
|
991
1000
|
for (const [relName, relConfig] of relationEntries) {
|
|
992
|
-
|
|
1001
|
+
let targetSchema;
|
|
1002
|
+
if (this.schemaRegistry) {
|
|
1003
|
+
targetSchema = this.schemaRegistry.get(relConfig.targetTable);
|
|
1004
|
+
}
|
|
1005
|
+
if (!targetSchema) {
|
|
1006
|
+
targetSchema = (0, query_builder_1.getTargetSchemaForRelation)(this.schema, relName, relConfig);
|
|
1007
|
+
}
|
|
993
1008
|
if (relConfig.type === 'many') {
|
|
994
1009
|
Object.defineProperty(mock, relName, {
|
|
995
1010
|
get: () => {
|
|
996
|
-
return new query_builder_1.CollectionQueryBuilder(relName, relConfig.targetTable, relConfig.foreignKey || relConfig.foreignKeys?.[0] || '', this.schema.name, targetSchema);
|
|
1011
|
+
return new query_builder_1.CollectionQueryBuilder(relName, relConfig.targetTable, relConfig.foreignKey || relConfig.foreignKeys?.[0] || '', this.schema.name, targetSchema, this.schemaRegistry);
|
|
997
1012
|
},
|
|
998
1013
|
enumerable: true,
|
|
999
1014
|
configurable: true,
|
|
@@ -1002,7 +1017,7 @@ class GroupedSelectQueryBuilder {
|
|
|
1002
1017
|
else {
|
|
1003
1018
|
Object.defineProperty(mock, relName, {
|
|
1004
1019
|
get: () => {
|
|
1005
|
-
const refBuilder = new query_builder_1.ReferenceQueryBuilder(relName, relConfig.targetTable, relConfig.foreignKeys || [relConfig.foreignKey || ''], relConfig.matches || [], relConfig.isMandatory ?? false, targetSchema);
|
|
1020
|
+
const refBuilder = new query_builder_1.ReferenceQueryBuilder(relName, relConfig.targetTable, relConfig.foreignKeys || [relConfig.foreignKey || ''], relConfig.matches || [], relConfig.isMandatory ?? false, targetSchema, this.schemaRegistry, [], this.schema.name);
|
|
1006
1021
|
return refBuilder.createMockTargetRow();
|
|
1007
1022
|
},
|
|
1008
1023
|
enumerable: true,
|
|
@@ -1075,88 +1090,136 @@ class GroupedSelectQueryBuilder {
|
|
|
1075
1090
|
if (!condition) {
|
|
1076
1091
|
return;
|
|
1077
1092
|
}
|
|
1078
|
-
// Get all field references from the condition
|
|
1093
|
+
// Get all field references from the condition and collect table aliases
|
|
1094
|
+
const allTableAliases = new Set();
|
|
1079
1095
|
const fieldRefs = condition.getFieldRefs();
|
|
1080
1096
|
for (const fieldRef of fieldRefs) {
|
|
1081
1097
|
if ('__tableAlias' in fieldRef && fieldRef.__tableAlias) {
|
|
1082
1098
|
const tableAlias = fieldRef.__tableAlias;
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
// Find the relation config for this navigation
|
|
1086
|
-
const relation = this.schema.relations[tableAlias];
|
|
1087
|
-
if (relation && relation.type === 'one') {
|
|
1088
|
-
// Get target schema from targetTableBuilder if available
|
|
1089
|
-
let targetSchema;
|
|
1090
|
-
if (relation.targetTableBuilder) {
|
|
1091
|
-
const targetTableSchema = relation.targetTableBuilder.build();
|
|
1092
|
-
targetSchema = targetTableSchema.schema;
|
|
1093
|
-
}
|
|
1094
|
-
// Add a JOIN for this reference
|
|
1095
|
-
joins.push({
|
|
1096
|
-
alias: tableAlias,
|
|
1097
|
-
targetTable: relation.targetTable,
|
|
1098
|
-
targetSchema,
|
|
1099
|
-
foreignKeys: relation.foreignKeys || [relation.foreignKey || ''],
|
|
1100
|
-
matches: relation.matches || [],
|
|
1101
|
-
isMandatory: relation.isMandatory ?? false,
|
|
1102
|
-
});
|
|
1103
|
-
}
|
|
1099
|
+
if (tableAlias && tableAlias !== this.schema.name) {
|
|
1100
|
+
allTableAliases.add(tableAlias);
|
|
1104
1101
|
}
|
|
1105
1102
|
}
|
|
1106
1103
|
}
|
|
1104
|
+
// Resolve all joins through the schema graph (handles multi-level)
|
|
1105
|
+
this.resolveJoinsForTableAliases(allTableAliases, joins);
|
|
1107
1106
|
}
|
|
1108
1107
|
/**
|
|
1109
1108
|
* Detect navigation properties in a selection and add JOINs for them
|
|
1110
1109
|
*/
|
|
1111
1110
|
detectAndAddJoinsFromSelection(selection, joins) {
|
|
1111
|
+
if (!selection || typeof selection !== 'object') {
|
|
1112
|
+
return;
|
|
1113
|
+
}
|
|
1114
|
+
// First pass: collect all table aliases
|
|
1115
|
+
const allTableAliases = new Set();
|
|
1116
|
+
this.collectTableAliasesFromSelection(selection, allTableAliases);
|
|
1117
|
+
// Second pass: resolve all joins through the schema graph
|
|
1118
|
+
this.resolveJoinsForTableAliases(allTableAliases, joins);
|
|
1119
|
+
}
|
|
1120
|
+
/**
|
|
1121
|
+
* Collect all table aliases from a selection
|
|
1122
|
+
*/
|
|
1123
|
+
collectTableAliasesFromSelection(selection, allTableAliases) {
|
|
1112
1124
|
if (!selection || typeof selection !== 'object') {
|
|
1113
1125
|
return;
|
|
1114
1126
|
}
|
|
1115
1127
|
for (const [, value] of Object.entries(selection)) {
|
|
1116
1128
|
if (value && typeof value === 'object' && '__tableAlias' in value && '__dbColumnName' in value) {
|
|
1117
|
-
|
|
1118
|
-
this.
|
|
1129
|
+
const tableAlias = value.__tableAlias;
|
|
1130
|
+
if (tableAlias && tableAlias !== this.schema.name) {
|
|
1131
|
+
allTableAliases.add(tableAlias);
|
|
1132
|
+
}
|
|
1133
|
+
// Also collect intermediate navigation aliases for multi-level navigation
|
|
1134
|
+
if ('__navigationAliases' in value && Array.isArray(value.__navigationAliases)) {
|
|
1135
|
+
for (const navAlias of value.__navigationAliases) {
|
|
1136
|
+
if (navAlias && navAlias !== this.schema.name) {
|
|
1137
|
+
allTableAliases.add(navAlias);
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1119
1141
|
}
|
|
1120
1142
|
else if (value instanceof conditions_1.SqlFragment) {
|
|
1121
|
-
// SqlFragment may contain navigation property references - extract them
|
|
1122
1143
|
const fieldRefs = value.getFieldRefs();
|
|
1123
1144
|
for (const fieldRef of fieldRefs) {
|
|
1124
|
-
|
|
1145
|
+
if ('__tableAlias' in fieldRef && fieldRef.__tableAlias) {
|
|
1146
|
+
const tableAlias = fieldRef.__tableAlias;
|
|
1147
|
+
if (tableAlias && tableAlias !== this.schema.name) {
|
|
1148
|
+
allTableAliases.add(tableAlias);
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
if ('__navigationAliases' in fieldRef && Array.isArray(fieldRef.__navigationAliases)) {
|
|
1152
|
+
for (const navAlias of fieldRef.__navigationAliases) {
|
|
1153
|
+
if (navAlias && navAlias !== this.schema.name) {
|
|
1154
|
+
allTableAliases.add(navAlias);
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1125
1158
|
}
|
|
1126
1159
|
}
|
|
1127
|
-
else if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
1128
|
-
|
|
1129
|
-
this.detectAndAddJoinsFromSelection(value, joins);
|
|
1160
|
+
else if (value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof query_builder_1.CollectionQueryBuilder)) {
|
|
1161
|
+
this.collectTableAliasesFromSelection(value, allTableAliases);
|
|
1130
1162
|
}
|
|
1131
1163
|
}
|
|
1132
1164
|
}
|
|
1133
1165
|
/**
|
|
1134
|
-
*
|
|
1166
|
+
* Resolve all navigation joins by finding the correct path through the schema graph.
|
|
1167
|
+
* Handles multi-level navigation like task.level.createdBy.
|
|
1135
1168
|
*/
|
|
1136
|
-
|
|
1137
|
-
if (
|
|
1169
|
+
resolveJoinsForTableAliases(allTableAliases, joins) {
|
|
1170
|
+
if (allTableAliases.size === 0) {
|
|
1138
1171
|
return;
|
|
1139
1172
|
}
|
|
1140
|
-
const
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1173
|
+
const resolved = new Set();
|
|
1174
|
+
let maxIterations = allTableAliases.size * 3;
|
|
1175
|
+
while (resolved.size < allTableAliases.size && maxIterations-- > 0) {
|
|
1176
|
+
// Build a map of already joined schemas for path resolution
|
|
1177
|
+
const joinedSchemas = new Map();
|
|
1178
|
+
joinedSchemas.set(this.schema.name, this.schema);
|
|
1179
|
+
for (const join of joins) {
|
|
1180
|
+
let schema;
|
|
1181
|
+
if (this.schemaRegistry) {
|
|
1182
|
+
schema = this.schemaRegistry.get(join.targetTable);
|
|
1183
|
+
}
|
|
1184
|
+
if (schema) {
|
|
1185
|
+
joinedSchemas.set(join.alias, schema);
|
|
1186
|
+
}
|
|
1187
|
+
}
|
|
1188
|
+
// Try to resolve each unresolved alias
|
|
1189
|
+
for (const alias of allTableAliases) {
|
|
1190
|
+
if (resolved.has(alias) || joins.some(j => j.alias === alias)) {
|
|
1191
|
+
resolved.add(alias);
|
|
1192
|
+
continue;
|
|
1193
|
+
}
|
|
1194
|
+
// Look for this alias in any of the already joined schemas
|
|
1195
|
+
for (const [sourceAlias, schema] of joinedSchemas) {
|
|
1196
|
+
if (schema.relations && schema.relations[alias]) {
|
|
1197
|
+
const relation = schema.relations[alias];
|
|
1198
|
+
if (relation.type === 'one') {
|
|
1199
|
+
let targetSchema;
|
|
1200
|
+
let targetSchemaName;
|
|
1201
|
+
if (this.schemaRegistry) {
|
|
1202
|
+
targetSchema = this.schemaRegistry.get(relation.targetTable);
|
|
1203
|
+
targetSchemaName = targetSchema?.schema;
|
|
1204
|
+
}
|
|
1205
|
+
if (!targetSchema && relation.targetTableBuilder) {
|
|
1206
|
+
targetSchema = relation.targetTableBuilder.build();
|
|
1207
|
+
targetSchemaName = targetSchema?.schema;
|
|
1208
|
+
}
|
|
1209
|
+
joins.push({
|
|
1210
|
+
alias,
|
|
1211
|
+
targetTable: relation.targetTable,
|
|
1212
|
+
targetSchema: targetSchemaName,
|
|
1213
|
+
foreignKeys: relation.foreignKeys || [relation.foreignKey || ''],
|
|
1214
|
+
matches: relation.matches || ['id'],
|
|
1215
|
+
isMandatory: relation.isMandatory ?? false,
|
|
1216
|
+
sourceAlias,
|
|
1217
|
+
});
|
|
1218
|
+
resolved.add(alias);
|
|
1219
|
+
break;
|
|
1220
|
+
}
|
|
1221
|
+
}
|
|
1150
1222
|
}
|
|
1151
|
-
// Add a JOIN for this reference
|
|
1152
|
-
joins.push({
|
|
1153
|
-
alias: tableAlias,
|
|
1154
|
-
targetTable: relation.targetTable,
|
|
1155
|
-
targetSchema,
|
|
1156
|
-
foreignKeys: relation.foreignKeys || [relation.foreignKey || ''],
|
|
1157
|
-
matches: relation.matches || [],
|
|
1158
|
-
isMandatory: relation.isMandatory ?? false,
|
|
1159
|
-
});
|
|
1160
1223
|
}
|
|
1161
1224
|
}
|
|
1162
1225
|
}
|