diff --git a/package.json b/package.json index 210ee4b..458450f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wms-core", - "version": "0.21.10-rc.1", + "version": "0.21.10", "description": "Node web application framework and toolbelt.", "repository": "https://gitlab.com/ArisuOngaku/wms-core", "author": "Alice Gaudon ", diff --git a/src/db/ModelQuery.ts b/src/db/ModelQuery.ts index e747098..1be60b2 100644 --- a/src/db/ModelQuery.ts +++ b/src/db/ModelQuery.ts @@ -92,7 +92,8 @@ export default class ModelQuery { // Prevent wildcard and fields from conflicting if (this._leftJoin) { - this.fields = this.fields.map(f => f.toString().split('.').length === 1 ? `\`${this.table}\`.${f}` : f); + this.fields = this.fields + .map(f => !f.toString().startsWith('(') && f.toString().split('.').length === 1 ? `\`${this.table}\`.${f}` : f); } if (this._pivot) this.fields.push(...this._pivot); @@ -231,9 +232,9 @@ export default class ModelQuery { this._sortDirection = undefined; this.fields.splice(0, this.fields.length); - this.fields.push('COUNT(*)'); + this.fields.push(new SelectFieldValue('_count', 'COUNT(*)', true)); let queryResult = await this.execute(connection); - return queryResult.results[0]['COUNT(*)']; + return queryResult.results[0]['_count']; } } @@ -275,7 +276,7 @@ class FieldValue { } public toString(first: boolean = true): string { - const valueStr = this.raw || this.value === null || this.value instanceof ModelQuery ? this.value : + const valueStr = (this.raw || this.value === null || this.value instanceof ModelQuery) ? this.value : (Array.isArray(this.value) ? `(${'?'.repeat(this.value.length).split('').join(',')})` : '?'); let field = this.field.split('.').map(p => `\`${p}\``).join('.'); return `${first ? '' : ','}${field}${this.test}${valueStr}`; @@ -295,7 +296,7 @@ class FieldValue { class SelectFieldValue extends FieldValue { public toString(first: boolean = true): string { - return `(${this.value instanceof ModelQuery ? this.value : '?'}) AS \`${this.field}\``; + return `(${this.value instanceof ModelQuery ? this.value : (this.raw ? this.value : '?')}) AS \`${this.field}\``; } }