diff --git a/src/modules/territorial-division/v1/strategies/district.strategy.ts b/src/modules/territorial-division/v1/strategies/district.strategy.ts index 0b8fb42..2a62e61 100644 --- a/src/modules/territorial-division/v1/strategies/district.strategy.ts +++ b/src/modules/territorial-division/v1/strategies/district.strategy.ts @@ -1,4 +1,4 @@ -import { Raw, Repository } from 'typeorm'; +import { Repository } from 'typeorm'; import { QueryDistrictDto } from '../dto'; import { District } from '../entities'; @@ -7,48 +7,48 @@ import { QueryStrategy } from '../interfaces'; export class DistrictStrategy implements QueryStrategy { - find( + async find( query: QueryDistrictDto, repository: Repository, ): Promise { + const queryBuilder = repository.createQueryBuilder(); + if (query.name) { - return repository.find({ - where: { - name: Raw((name: string) => `LOWER(${name}) Like '%${query.name}%'`), - }, + queryBuilder.where('LOWER(name) like LOWER(:name)', { + name: `%${query.name}%`, }); } if (query.code) { - return repository.findOne({ - where: { code: query.code }, - }); + queryBuilder.andWhere('code = :code', { code: query.code }); } if (query.identifier) { - return repository.findOne({ - where: { identifier: query.identifier }, + queryBuilder.andWhere('identifier = :identifier', { + identifier: query.identifier, }); } if (query.municipalityCode) { - return repository.find({ - where: { municipalityCode: query.municipalityCode }, + queryBuilder.andWhere('"municipalityCode" = :municipalityCode', { + municipalityCode: query.municipalityCode, }); } if (query.provinceCode) { - return repository.find({ - where: { provinceCode: query.provinceCode }, + queryBuilder.andWhere('"provinceCode" = :provinceCode', { + provinceCode: query.provinceCode, }); } if (query.regionCode) { - return repository.find({ - where: { regionCode: query.regionCode }, + queryBuilder.andWhere('"regionCode" = :regionCode', { + regionCode: query.regionCode, }); } - return repository.find(); + const data = await queryBuilder.getMany(); + + return data.length === 1 ? data[0] : data; } } diff --git a/src/modules/territorial-division/v1/strategies/municipality.strategy.ts b/src/modules/territorial-division/v1/strategies/municipality.strategy.ts index 57a5833..3b8c480 100644 --- a/src/modules/territorial-division/v1/strategies/municipality.strategy.ts +++ b/src/modules/territorial-division/v1/strategies/municipality.strategy.ts @@ -1,4 +1,4 @@ -import { Raw, Repository } from 'typeorm'; +import { Repository } from 'typeorm'; import { QueryMunicipalityDto } from '../dto'; import { Municipality } from '../entities'; @@ -7,42 +7,42 @@ import { QueryStrategy } from '../interfaces'; export class MunicipalityStrategy implements QueryStrategy { - find( + async find( query: QueryMunicipalityDto, repository: Repository, ): Promise { + const queryBuilder = repository.createQueryBuilder(); + if (query.name) { - return repository.find({ - where: { - name: Raw((name: string) => `LOWER(${name}) Like '%${query.name}%'`), - }, + queryBuilder.where('LOWER(name) like LOWER(:name)', { + name: `%${query.name}%`, }); } if (query.code) { - return repository.findOne({ - where: { code: query.code }, - }); + queryBuilder.andWhere('code = :code', { code: query.code }); } if (query.identifier) { - return repository.findOne({ - where: { identifier: query.identifier }, + queryBuilder.andWhere('identifier = :identifier', { + identifier: query.identifier, }); } if (query.provinceCode) { - return repository.find({ - where: { provinceCode: query.provinceCode }, + queryBuilder.andWhere('"provinceCode" = :provinceCode', { + provinceCode: query.provinceCode, }); } if (query.regionCode) { - return repository.find({ - where: { regionCode: query.regionCode }, + queryBuilder.andWhere('"regionCode" = :regionCode', { + regionCode: query.regionCode, }); } - return repository.find(); + const data = await queryBuilder.limit(100).getMany(); + + return data.length === 1 ? data[0] : data; } } diff --git a/src/modules/territorial-division/v1/strategies/neighborhood.strategy.ts b/src/modules/territorial-division/v1/strategies/neighborhood.strategy.ts index c5f65bc..bf403b9 100644 --- a/src/modules/territorial-division/v1/strategies/neighborhood.strategy.ts +++ b/src/modules/territorial-division/v1/strategies/neighborhood.strategy.ts @@ -1,4 +1,4 @@ -import { Raw, Repository } from 'typeorm'; +import { Repository } from 'typeorm'; import { QueryNeighborhoodDto } from '../dto'; import { Neighborhood } from '../entities'; @@ -7,60 +7,60 @@ import { QueryStrategy } from '../interfaces'; export class NeighborhoodStrategy implements QueryStrategy { - find( + async find( query: QueryNeighborhoodDto, repository: Repository, ): Promise { + const queryBuilder = repository.createQueryBuilder(); + if (query.name) { - return repository.find({ - where: { - name: Raw((name: string) => `LOWER(${name}) Like '%${query.name}%'`), - }, + queryBuilder.where('LOWER(name) like LOWER(:name)', { + name: `%${query.name}%`, }); } if (query.code) { - return repository.findOne({ - where: { code: query.code }, - }); + queryBuilder.andWhere('code = :code', { code: query.code }); } if (query.identifier) { - return repository.findOne({ - where: { identifier: query.identifier }, + queryBuilder.andWhere('identifier = :identifier', { + identifier: query.identifier, }); } if (query.sectionCode) { - return repository.find({ - where: { sectionCode: query.sectionCode }, + queryBuilder.andWhere('"sectionCode" = :sectionCode', { + sectionCode: query.sectionCode, }); } if (query.districtCode) { - return repository.find({ - where: { districtCode: query.districtCode }, + queryBuilder.andWhere('"districtCode" = :districtCode', { + districtCode: query.districtCode, }); } if (query.municipalityCode) { - return repository.find({ - where: { municipalityCode: query.municipalityCode }, + queryBuilder.andWhere('"municipalityCode" = :municipalityCode', { + municipalityCode: query.municipalityCode, }); } if (query.provinceCode) { - return repository.find({ - where: { provinceCode: query.provinceCode }, + queryBuilder.andWhere('"provinceCode" = :provinceCode', { + provinceCode: query.provinceCode, }); } if (query.regionCode) { - return repository.find({ - where: { regionCode: query.regionCode }, + queryBuilder.andWhere('"regionCode" = :regionCode', { + regionCode: query.regionCode, }); } - return repository.find({ take: 100 }); + const data = await queryBuilder.limit(100).getMany(); + + return data.length === 1 ? data[0] : data; } } diff --git a/src/modules/territorial-division/v1/strategies/province.strategy.ts b/src/modules/territorial-division/v1/strategies/province.strategy.ts index 68bf13f..42c7b7a 100644 --- a/src/modules/territorial-division/v1/strategies/province.strategy.ts +++ b/src/modules/territorial-division/v1/strategies/province.strategy.ts @@ -1,4 +1,4 @@ -import { Raw, Repository } from 'typeorm'; +import { Repository } from 'typeorm'; import { QueryProvinceDto } from '../dto'; import { Province } from '../entities'; @@ -7,36 +7,36 @@ import { QueryStrategy } from '../interfaces'; export class ProvinceStrategy implements QueryStrategy { - find( + async find( query: QueryProvinceDto, repository: Repository, ): Promise { + const queryBuilder = repository.createQueryBuilder(); + if (query.name) { - return repository.find({ - where: { - name: Raw((name: string) => `LOWER(${name}) Like '%${query.name}%'`), - }, + queryBuilder.where('LOWER(name) like LOWER(:name)', { + name: `%${query.name}%`, }); } if (query.code) { - return repository.findOne({ - where: { code: query.code }, - }); + queryBuilder.andWhere('code = :code', { code: query.code }); } if (query.identifier) { - return repository.findOne({ - where: { identifier: query.identifier }, + queryBuilder.andWhere('identifier = :identifier', { + identifier: query.identifier, }); } if (query.regionCode) { - return repository.find({ - where: { regionCode: query.regionCode }, + queryBuilder.andWhere('"regionCode" = :regionCode', { + regionCode: query.regionCode, }); } - return repository.find(); + const data = await queryBuilder.limit(100).getMany(); + + return data.length === 1 ? data[0] : data; } } diff --git a/src/modules/territorial-division/v1/strategies/region.strategy.ts b/src/modules/territorial-division/v1/strategies/region.strategy.ts index 7a1baa8..65efce1 100644 --- a/src/modules/territorial-division/v1/strategies/region.strategy.ts +++ b/src/modules/territorial-division/v1/strategies/region.strategy.ts @@ -1,34 +1,34 @@ -import { Raw, Repository } from 'typeorm'; +import { Repository } from 'typeorm'; import { QueryRegionDto } from '../dto'; import { Region } from '../entities'; import { QueryStrategy } from '../interfaces'; export class RegionStrategy implements QueryStrategy { - find( + async find( query: QueryRegionDto, repository: Repository, ): Promise { + const queryBuilder = repository.createQueryBuilder(); + if (query.name) { - return repository.find({ - where: { - name: Raw((name: string) => `LOWER(${name}) Like '%${query.name}%'`), - }, + queryBuilder.where('LOWER(name) like LOWER(:name)', { + name: `%${query.name}%`, }); } if (query.code) { - return repository.findOne({ - where: { code: query.code }, - }); + queryBuilder.andWhere('code = :code', { code: query.code }); } if (query.identifier) { - return repository.findOne({ - where: { identifier: query.identifier }, + queryBuilder.andWhere('identifier = :identifier', { + identifier: query.identifier, }); } - return repository.find(); + const data = await queryBuilder.limit(100).getMany(); + + return data.length === 1 ? data[0] : data; } } diff --git a/src/modules/territorial-division/v1/strategies/section.strategy.ts b/src/modules/territorial-division/v1/strategies/section.strategy.ts index 49b8f64..943916a 100644 --- a/src/modules/territorial-division/v1/strategies/section.strategy.ts +++ b/src/modules/territorial-division/v1/strategies/section.strategy.ts @@ -1,4 +1,4 @@ -import { Raw, Repository } from 'typeorm'; +import { Repository } from 'typeorm'; import { QuerySectionDto } from '../dto'; import { Section } from '../entities'; @@ -7,54 +7,54 @@ import { QueryStrategy } from '../interfaces'; export class SectionStrategy implements QueryStrategy { - find( + async find( query: QuerySectionDto, repository: Repository
, ): Promise
{ + const queryBuilder = repository.createQueryBuilder(); + if (query.name) { - return repository.find({ - where: { - name: Raw((name: string) => `LOWER(${name}) Like '%${query.name}%'`), - }, + queryBuilder.where('LOWER(name) like LOWER(:name)', { + name: `%${query.name}%`, }); } if (query.code) { - return repository.findOne({ - where: { code: query.code }, - }); + queryBuilder.andWhere('code = :code', { code: query.code }); } if (query.identifier) { - return repository.findOne({ - where: { identifier: query.identifier }, + queryBuilder.andWhere('identifier = :identifier', { + identifier: query.identifier, }); } if (query.districtCode) { - return repository.find({ - where: { districtCode: query.districtCode }, + queryBuilder.andWhere('"districtCode" = :districtCode', { + districtCode: query.districtCode, }); } if (query.municipalityCode) { - return repository.find({ - where: { municipalityCode: query.municipalityCode }, + queryBuilder.andWhere('"municipalityCode" = :municipalityCode', { + municipalityCode: query.municipalityCode, }); } if (query.provinceCode) { - return repository.find({ - where: { provinceCode: query.provinceCode }, + queryBuilder.andWhere('"provinceCode" = :provinceCode', { + provinceCode: query.provinceCode, }); } if (query.regionCode) { - return repository.find({ - where: { regionCode: query.regionCode }, + queryBuilder.andWhere('"regionCode" = :regionCode', { + regionCode: query.regionCode, }); } - return repository.find(); + const data = await queryBuilder.limit(100).getMany(); + + return data.length === 1 ? data[0] : data; } } diff --git a/src/modules/territorial-division/v1/strategies/sub-neighborhood.strategy.ts b/src/modules/territorial-division/v1/strategies/sub-neighborhood.strategy.ts index 2c900d4..cda0b2a 100644 --- a/src/modules/territorial-division/v1/strategies/sub-neighborhood.strategy.ts +++ b/src/modules/territorial-division/v1/strategies/sub-neighborhood.strategy.ts @@ -1,4 +1,4 @@ -import { Raw, Repository } from 'typeorm'; +import { Repository } from 'typeorm'; import { QuerySubNeighborhoodDto } from '../dto'; import { SubNeighborhood } from '../entities'; @@ -7,66 +7,66 @@ import { QueryStrategy } from '../interfaces'; export class SubNeighborhoodStrategy implements QueryStrategy { - find( + async find( query: QuerySubNeighborhoodDto, repository: Repository, ): Promise { + const queryBuilder = repository.createQueryBuilder(); + if (query.name) { - return repository.find({ - where: { - name: Raw((name: string) => `LOWER(${name}) Like '%${query.name}%'`), - }, + queryBuilder.where('LOWER(name) like LOWER(:name)', { + name: `%${query.name}%`, }); } if (query.code) { - return repository.findOne({ - where: { code: query.code }, - }); + queryBuilder.andWhere('code = :code', { code: query.code }); } if (query.identifier) { - return repository.findOne({ - where: { identifier: query.identifier }, + queryBuilder.andWhere('identifier = :identifier', { + identifier: query.identifier, }); } if (query.neighborhoodCode) { - return repository.find({ - where: { neighborhoodCode: query.neighborhoodCode }, + queryBuilder.andWhere('"neighborhoodCode" = :neighborhoodCode', { + neighborhoodCode: query.neighborhoodCode, }); } if (query.sectionCode) { - return repository.find({ - where: { sectionCode: query.sectionCode }, + queryBuilder.andWhere('"sectionCode" = :sectionCode', { + sectionCode: query.sectionCode, }); } if (query.districtCode) { - return repository.find({ - where: { districtCode: query.districtCode, take: 100 }, + queryBuilder.andWhere('"districtCode" = :districtCode', { + districtCode: query.districtCode, }); } if (query.municipalityCode) { - return repository.find({ - where: { municipalityCode: query.municipalityCode, take: 100 }, + queryBuilder.andWhere('"municipalityCode" = :municipalityCode', { + municipalityCode: query.municipalityCode, }); } if (query.provinceCode) { - return repository.find({ - where: { provinceCode: query.provinceCode, take: 100 }, + queryBuilder.andWhere('"provinceCode" = :provinceCode', { + provinceCode: query.provinceCode, }); } if (query.regionCode) { - return repository.find({ - where: { regionCode: query.regionCode, take: 100 }, + queryBuilder.andWhere('"regionCode" = :regionCode', { + regionCode: query.regionCode, }); } - return repository.find({ take: 100 }); + const data = await queryBuilder.limit(100).getMany(); + + return data.length === 1 ? data[0] : data; } }