diff --git a/src/js/buildFilterQuery.js b/src/js/buildFilterQuery.js index a9588d4b..f44dae7d 100644 --- a/src/js/buildFilterQuery.js +++ b/src/js/buildFilterQuery.js @@ -28,6 +28,20 @@ export function buildFilterQuery(selectStmt, params) { const whereObjClause = connector._buildWhere(modelName, safeWhere); + //add the modelName to each requested field to avoid ambiguity in more complex queries + console.log('whereObjClause.sql -------> ', whereObjClause.sql); + + const tableName = + modelName.toLowerCase() === 'planterregistration' + ? 'planter_registrations' + : modelName.toLowerCase(); + const newQueryFields = whereObjClause.sql + .replace(/"/, `"${tableName}.`) + .replace(/AND "/gi, `AND "${tableName}.`) + .replace(/"/g, ''); + + whereObjClause.sql = newQueryFields; + if (whereObjClause.sql) { const hasWhere = /WHERE(?![^(]*\))/i.test(selectStmt); query.sql += ` ${hasWhere ? 'AND' : 'WHERE'} ${whereObjClause.sql}`; @@ -47,5 +61,7 @@ export function buildFilterQuery(selectStmt, params) { } } + console.log('QUERY ---------', query); + return query; } diff --git a/src/mixins/utils.repository-mixin.ts b/src/mixins/utils.repository-mixin.ts index 9bc70155..62997530 100644 --- a/src/mixins/utils.repository-mixin.ts +++ b/src/mixins/utils.repository-mixin.ts @@ -80,6 +80,13 @@ export function UtilsRepositoryMixin< const planterIds = await this.getNonOrganizationPlanterIds(); // if planter repository request if (model === 'planter') { + // return { + // and: [ + // { organizationId: null }, + // { 'planter.id': { inq: planterIds } }, + // ], + // }; + // could just do this if we didn't need to use 'planter.id' to avoid errors with adding other filters return { id: { inq: planterIds } }; } else { // if trees or other repository request @@ -102,7 +109,7 @@ export function UtilsRepositoryMixin< return { or: [ { organizationId: { inq: entityIds } }, - { id: { inq: planterIds } }, + { 'planter.id': { inq: planterIds } }, ], }; } else { diff --git a/src/repositories/planter.repository.ts b/src/repositories/planter.repository.ts index e9332f43..1e51a935 100644 --- a/src/repositories/planter.repository.ts +++ b/src/repositories/planter.repository.ts @@ -12,7 +12,7 @@ import { Planter, PlanterRelations, PlanterRegistration } from '../models'; import { TreetrackerDataSource } from '../datasources'; import { PlanterRegistrationRepository } from './planterRegistration.repository'; import { UtilsRepositoryMixin } from '../mixins/utils.repository-mixin'; -import expect from 'expect-runtime'; +// import expect from 'expect-runtime'; import { buildFilterQuery } from '../js/buildFilterQuery'; import { utils } from '../js/utils'; @@ -70,9 +70,14 @@ export class PlanterRepository extends UtilsRepositoryMixin< try { if (this.dataSource.connector) { - const columnNames = this.dataSource.connector - .buildColumnNames('Planter', filter) - .replace('"id"', 'planter.id as "id"'); + // const columnNames = this.dataSource.connector + // .buildColumnNames('Planter', filter) + // .replace('"id"', 'planter.id as "id"') + // .replace('"first_name"', 'planter.first_name as "first_name"') + // .replace('"last_name"', 'planter.last_name as "last_name"') + // .replace('"email"', 'planter.email as "email"') + // .replace('"organization"', 'planter.organization as "organization"') + // .replace('"phone"', 'planter.phone as "phone"'); let selectStmt; if (deviceIdentifier) { @@ -80,7 +85,7 @@ export class PlanterRepository extends UtilsRepositoryMixin< deviceIdentifier, )}`; } else { - selectStmt = `SELECT ${columnNames} FROM planter`; + selectStmt = `SELECT planter.* FROM planter`; } const params = { @@ -90,7 +95,6 @@ export class PlanterRepository extends UtilsRepositoryMixin< }; const query = buildFilterQuery(selectStmt, params); - // console.log('query ---------', query); const result = await this.execute(query.sql, query.params, options); return result.map((planter) => utils.convertCamel(planter));