mythix-orm-sql-base 1.9.3 → 1.9.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.
@@ -661,24 +661,37 @@ class SQLConnectionBase extends ConnectionBase {
661
661
  queryEngine = await this.finalizeQuery('read', queryEngine, options);
662
662
  queryEngine = queryEngine.clone();
663
663
 
664
- // let queryContext = queryEngine.getOperationContext();
665
- // let distinct = queryContext.distinct;
666
- // if (distinct) {
667
- // let fullyQualifiedFieldName = distinct.getFullyQualifiedFieldName();
664
+ let queryGenerator = this.getQueryGenerator();
665
+ let queryContext = queryEngine.getOperationContext();
666
+ let distinct = queryContext.distinct;
667
+
668
+ if (distinct) {
669
+ let distinctField = distinct.getField(this);
670
+ if (distinctField) {
671
+ if (Literals.LiteralBase.isLiteral(distinctField)) {
672
+ let field = distinctField.getField(this);
673
+ if (!field)
674
+ field = distinctField.valueOf();
675
+
676
+ if (field)
677
+ distinctField = field;
678
+ }
668
679
 
669
- // if (fullyQualifiedFieldName) {
670
- // let LiteralConstructor = literal.constructor;
671
- // literal = new LiteralConstructor(fullyQualifiedFieldName);
680
+ if (typeof distinctField.isField === 'function' && distinctField.isField(distinctField))
681
+ distinctField = new Literals.Literal(`DISTINCT ${queryGenerator.getEscapedColumnName(distinctField.Model, distinctField)}`, { isAggregate: true });
682
+ else
683
+ distinctField = new Literals.Literal(`DISTINCT ${distinctField.toString(this, { isAggregate: true })}`, { isAggregate: true });
672
684
 
673
- // queryEngine = queryEngine.DISTINCT(false).PROJECT(literal);
674
- // }
675
- // }
685
+ let LiteralConstructor = literal.constructor;
686
+ literal = new LiteralConstructor(distinctField);
676
687
 
677
- let literalStr = literal.toString(this);
678
- let queryGenerator = this.getQueryGenerator();
679
- let query = queryEngine.PROJECT(literal).ORDER(); // TODO: Remove ORDER here once aggregate ORDER BY is fixed
680
- let sqlStr = queryGenerator.generateSelectStatement(query, options);
688
+ queryEngine = queryEngine.DISTINCT(false);
689
+ }
690
+ }
681
691
 
692
+ let literalStr = literal.toString(this);
693
+ let query = queryEngine.PROJECT(literal).ORDER(); // TODO: Remove ORDER here once aggregate ORDER BY is fixed
694
+ let sqlStr = queryGenerator.generateSelectStatement(query, this.stackAssign(options, { isAggregate: true }));
682
695
  let result = await this.query(sqlStr, options);
683
696
  let columnIndex = result.columns.indexOf(literalStr);
684
697
  if (columnIndex < 0) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mythix-orm-sql-base",
3
- "version": "1.9.3",
3
+ "version": "1.9.5",
4
4
  "description": "SQL base support for Mythix ORM",
5
5
  "main": "lib/index",
6
6
  "type": "commonjs",
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "homepage": "https://github.com/th317erd/mythix-orm-sql-base#readme",
36
36
  "peerDependencies": {
37
- "mythix-orm": "^1.11.4"
37
+ "mythix-orm": "^1.11.6"
38
38
  },
39
39
  "dependencies": {
40
40
  "luxon": "^3.1.0",