Skip to content

Commit

Permalink
Compute total cost based on selector
Browse files Browse the repository at this point in the history
  • Loading branch information
catalin-oancea committed Nov 6, 2024
1 parent 63be15d commit c7453da
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 3 deletions.
10 changes: 8 additions & 2 deletions api/src/modules/projects/projects-map.repository.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Injectable } from '@nestjs/common';
import { Repository, SelectQueryBuilder } from 'typeorm';
import { QueryBuilder, Repository, SelectQueryBuilder } from 'typeorm';
import { Project } from '@shared/entities/projects.entity';
import { InjectRepository } from '@nestjs/typeorm';
import {
Expand Down Expand Up @@ -47,7 +47,6 @@ export class ProjectsMapRepository extends Repository<Project> {
'SUM(p.abatement_potential)',
'total_abatement_potential',
)
.addSelect('SUM(p.total_cost)', 'total_cost')
.groupBy('p.country_code');

return this.applyFilters(subQuery, filters);
Expand All @@ -56,6 +55,7 @@ export class ProjectsMapRepository extends Repository<Project> {
'filtered_projects.country_code = country.code',
);

console.log('>>>>>>>>>>>>>', geoQueryBuilder.getSql());
const { geojson } = await geoQueryBuilder.getRawOne<{
geojson: ProjectMap;
}>();
Expand All @@ -79,6 +79,12 @@ export class ProjectsMapRepository extends Repository<Project> {
abatementPotentialRange,
costRangeSelector,
} = filters;
if (costRangeSelector?.length && costRangeSelector[0] === 'npv') {
queryBuilder.addSelect('SUM(p.total_cost_npv)', 'total_cost');
} else {
queryBuilder.addSelect('SUM(p.total_cost)', 'total_cost');
}

if (countryCode?.length) {
queryBuilder.andWhere('p.countryCode IN (:...countryCodes)', {
countryCodes: countryCode,
Expand Down
2 changes: 1 addition & 1 deletion api/test/integration/project-map/project-map.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ describe('Project Map', () => {
const response = await testManager
.request()
.get(projectsContract.getProjectsMap.path)
.query({ filter: { costRange: '1000, 1000', costRangeSelector: 'nvm' } });
.query({ filter: { costRange: '1000, 1000', costRangeSelector: 'npv' } });

expect(response.status).toBe(HttpStatus.OK);
expect(response.body.features.length).toBe(1);
Expand Down

0 comments on commit c7453da

Please sign in to comment.