velocious 1.0.436 → 1.0.437

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.
@@ -301,14 +301,17 @@ export default class VelociousDatabaseQueryModelClassQuery extends DatabaseQuery
301
301
  * @returns {Promise<number>} - Resolves with the count.
302
302
  */
303
303
  async count() {
304
- if (this._limit !== null || this._offset !== null) {
304
+ // Pagination, or a model with no single primary key (setPrimaryKey(null), e.g. composite-key
305
+ // legacy tables with no id column), count via the subquery form. It references no primary-key
306
+ // column and preserves DISTINCT over joins — which a bare COUNT(*) would not (it would count
307
+ // joined duplicate rows instead of distinct root rows). primaryKey() falls back to "id" for the
308
+ // no-pk case, so hasPrimaryKey() is used to detect it.
309
+ if (this._limit !== null || this._offset !== null || !this.getModelClass().hasPrimaryKey()) {
305
310
  return await this.paginatedCount()
306
311
  }
307
312
 
308
- // Models without a single primary key (composite-key tables) count via COUNT(*), not COUNT(<table>.id).
309
- const primaryKeyColumn = this.getModelClass().primaryKey()
310
313
  const distinctPrefix = this._distinct ? "DISTINCT " : ""
311
- let sql = primaryKeyColumn ? `COUNT(${distinctPrefix}${this.driver.quoteTable(this.getModelClass().tableName())}.${this.driver.quoteColumn(primaryKeyColumn)})` : "COUNT(*)"
314
+ let sql = `COUNT(${distinctPrefix}${this.driver.quoteTable(this.getModelClass().tableName())}.${this.driver.quoteColumn(this.getModelClass().primaryKey())})`
312
315
 
313
316
  if (this.driver.getType() == "pgsql") sql += "::int"
314
317
 
@@ -2291,6 +2291,16 @@ class VelociousDatabaseRecord {
2291
2291
  return "id"
2292
2292
  }
2293
2293
 
2294
+ /**
2295
+ * Whether the model has a single primary key column. `setPrimaryKey(null)` (e.g. composite-key
2296
+ * legacy tables) declares no single primary key; `primaryKey()` still falls back to "id" for the
2297
+ * default case, so callers that must distinguish "no primary key" use this instead.
2298
+ * @returns {boolean} - False only when the primary key was explicitly set to null.
2299
+ */
2300
+ static hasPrimaryKey() {
2301
+ return this._primaryKey !== null
2302
+ }
2303
+
2294
2304
  /**
2295
2305
  * Runs save.
2296
2306
  * @returns {Promise<void>} - Resolves when complete.
@@ -1 +1 @@
1
- {"version":3,"file":"model-class-query.d.ts","sourceRoot":"","sources":["../../../../src/database/query/model-class-query.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-class-query.d.ts","sourceRoot":"","sources":["../../../../src/database/query/model-class-query.js"],"names":[],"mappings":"AAmKA;;;GAGG;AACH;;;;GAIG;AAEH;;;GAGG;AACH,2DAZ4D,EAAE,SAAjD,cAAe,oBAAoB,EAAE,OAAQ;IAaxD;;;OAGG;IACH,kBAFW,uBAAuB,CAAC,EAAE,CAAC,EA+BrC;IArBC;;mBAEe;IACf,YADS,EAAE,CACiB;IAE5B;;yBAEqB;IACrB,eADS,MAAM,EAAE,CAC2B;IAC5C,0BAAsF;IACtF,gCAAiE;IAEjE;;2DAEuD;IACvD,YADS,OAAO,iBAAiB,EAAE,cAAc,EAAE,CACQ;IAE3D;;2DAEuD;IACvD,YADS,OAAO,iBAAiB,EAAE,cAAc,EAAE,CACQ;IAG7D;;;OAGG;IACH,SAFa,IAAI,CAgChB;IAED;;;;;;OAMG;IACH,gBAHW,OAAO,iBAAiB,EAAE,aAAa,GACrC,IAAI,CAQhB;IAED;;;;;;;;;;;;OAYG;IACH,gBAHW,OAAO,iBAAiB,EAAE,aAAa,GACrC,IAAI,CAQhB;IAED;;;;;;;;OAQG;IACH,sBAHc,MAAM,EAAA,GACP,MAAM,CAIlB;IAED;;;OAGG;IACH,SAFa,OAAO,CAAC,MAAM,CAAC,CAkD3B;IAED;;;OAGG;IACH,kBAFa,OAAO,CAAC,MAAM,CAAC,CAqB3B;IAED;;;;OAIG;IACH,eAHW,OAAO,YAAY,EAAE,kBAAkB,GACrC,IAAI,CAmChB;IAED;;;;;;;;OAQG;IACH,qBAHW,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GAC/B,IAAI,CAMhB;IAED;;;;;;OAMG;IACH,4BAJW,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,UACxB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GAC/B,IAAI,CAYhB;IAED;;;OAGG;IACH,sBAFa,MAAM,CAuBlB;IAED;;;OAGG;IACH,iBAFa,EAAE,CAMd;IAED;;;OAGG;IACH,mBAFa,MAAM,EAAE,CAIpB;IAED;;;OAGG;IACH,kBAFa,OAAO,mBAAmB,EAAE,OAAO,CAI/C;IAED;;;OAGG;IACH,4BAFa,OAAO,CAInB;IAED;;;;OAIG;IACH,8BAHW,MAAM,EAAE,GACN,IAAI,CAKhB;IAED;;;;OAIG;IACH,2BAHW,MAAM,EAAE,GACN,qCAAqC,CAAC,EAAE,CAAC,CAWrD;IAED;;;;OAIG;IACH,mCAHW,MAAM,EAAE,GACN,MAAM,CAIlB;IAED;;;;OAIG;IACH,oCAHW,MAAM,EAAE,GACN,cAAc,oBAAoB,EAAE,OAAO,CAiBvD;IAED;;;;OAIG;IACH,wBAHW,MAAM,EAAE,GACN;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;KAAC,CAM1D;IAED;;;;OAIG;IACH,4BAHW,MAAM,EAAE,GACN,MAAM,CAMlB;IAED;;;;OAIG;IACH,kCAHc,MAAM,EAAA,GACP,MAAM,CAMlB;IAED;;;;OAIG;IACH,yBAHc,MAAM,EAAA,GACP,MAAM,CAIlB;IAED;;;;;OAKG;IACH,6BAJW,OAAO,4BAA4B,EAAE,oBAAoB,GAAG,MAAM,GAAG,MAAM,EAAE,yBAC7E,OAAO,4BAA4B,EAAE,oBAAoB,GACvD,IAAI,CAiBhB;IAED;;;;OAIG;IACH,iCAHW,OAAO,4BAA4B,EAAE,oBAAoB,GACvD,IAAI,CAqBhB;IAED;;;;;;OAMG;IACH,mDAJG;QAAuB,QAAQ,EAAvB,MAAM,EAAE;QACwD,eAAe,EAA/E,OAAO,4BAA4B,EAAE,oBAAoB;KACjE,GAAU,IAAI,CAyDhB;IAED;;;;;OAKG;IACH,sCAJW,cAAc,oBAAoB,EAAE,OAAO,YAC3C,MAAM,EAAE,GACN,qCAAqC,CAAC,EAAE,CAAC,CAYrD;IAED;;;OAGG;IACH,cAFa,OAAO,CAAC,IAAI,CAAC,CAQzB;IAED;;;;;;OAMG;IACH,gBAHW,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GACf,OAAO,CAAC,IAAI,CAAC,CAgCzB;IAED;;;;OAIG;IACH,eAHW,MAAM,GAAC,MAAM,GACX,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAuBrC;IAED;;;;OAIG;IACH,mBAHW;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAC,GAC9B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAU5C;IAED;;;;;OAKG;IACH,2BAJW;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAC,aAChC,CAAS,IAAgB,EAAhB,YAAY,CAAC,EAAE,CAAC,KAAI,IAAI,GAC/B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAUrC;IAED;;;;OAIG;IACH,yBAHW;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;KAAC,GAC9B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAUrC;IAED;;;;;OAKG;IACH,+BAJW,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,aACjB,CAAS,IAAgB,EAAhB,YAAY,CAAC,EAAE,CAAC,KAAI,IAAI,GAC/B,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAiBrC;IAED;;;OAGG;IACH,SAFa,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAO5C;IAED;;;OAGG;IACH,QAFa,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAQ5C;IAED;;;;OAIG;IACH,cAHW,OAAO,YAAY,EAAE,mBAAmB,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,OAAO,YAAY,EAAE,mBAAmB,CAAC,GAC1G,IAAI,CAMhB;IAED;;;OAGG;IACH,QAFa,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAmD5C;IAED;;;OAGG;IACH,WAFa,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAI5C;IAED;;;;OAIG;IACH,kBAHW,CAAG,MAAM,GAAC,MAAM,EAAE,GAAA,GAChB,OAAO,CAAC,KAAK,CAAC,OAAC,CAAC,CAAC,CAyC7B;IAED;;;;OAIG;IACH,aAHW,OAAO,YAAY,EAAE,iBAAiB,GACpC,IAAI,CAiChB;IAED;;;;OAIG;IACH,gBAHW,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GACf,IAAI,CAiBhB;IAED;;;;OAIG;IACH,gBAHW,OAAO,YAAY,EAAE,iBAAiB,GACpC,IAAI,CAiChB;CAUF;;;;oCA18B2D,EAAE,SAAjD,cAAe,oBAAoB,EAAE,OAAQ,kDAC7C,OAAO,YAAY,EAAE,aAAa,GAAG;IAAC,UAAU,EAAE,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,mBAAmB,EAAE,OAAO,CAAC;IAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,iBAAiB,EAAE,cAAc,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,iBAAiB,EAAE,cAAc,EAAE,CAAA;CAAC;0BAjKrQ,YAAY;wBAGd,mBAAmB"}