Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat: route search numero by polygon #474

Merged
merged 114 commits into from
Oct 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
53e3bcd
start migration
fufeck May 8, 2024
abe816d
test
fufeck May 13, 2024
1753415
add varchar
fufeck May 13, 2024
9ce63aa
delete export
fufeck Jul 9, 2024
b8a02fc
delete dead package.json
fufeck Jul 9, 2024
c2de515
dead code
fufeck Jul 9, 2024
98abed7
link postgres to var env
fufeck Jul 15, 2024
1d2fe68
update voie service
fufeck Jul 15, 2024
152ef3f
update numero service
fufeck Jul 15, 2024
247873a
add findCentroid
fufeck Jul 15, 2024
159557b
stash
fufeck Jul 15, 2024
b53561e
change to uuid
fufeck Jul 15, 2024
6e1d790
refacto voie service
fufeck Jul 15, 2024
9a7bf66
avance on numero.service
fufeck Jul 15, 2024
ce06436
finish numeros and voie
fufeck Jul 15, 2024
80116d5
fix DTO
fufeck Jul 16, 2024
12a1fdc
migration toponyme service
fufeck Jul 16, 2024
7b8f219
base locales progress
fufeck Jul 16, 2024
87e30f5
finish service baseLocale
fufeck Jul 16, 2024
5d96301
correct import voie
fufeck Jul 16, 2024
d07f939
import toponyme
fufeck Jul 16, 2024
5c08215
import many numero
fufeck Jul 16, 2024
c178264
progress
fufeck Jul 16, 2024
d96b5b0
finish voie service
fufeck Jul 16, 2024
36e00d6
migration export csv
fufeck Jul 16, 2024
8713cf1
migration module habilitation
fufeck Jul 16, 2024
e429c97
finish without stat
fufeck Jul 16, 2024
7f3d06c
change geom srid postgis
fufeck Jul 16, 2024
be725d3
finish stats modules
fufeck Jul 16, 2024
6b73ced
correct find distinct parcelles
fufeck Jul 17, 2024
6692360
change numeros
fufeck Jul 17, 2024
614a1e1
change entities api property
fufeck Jul 17, 2024
79a3994
object id
fufeck Jul 17, 2024
7f749a9
Merge branch 'master' into fufeck_migration_postgres
fufeck Jul 17, 2024
3840f7d
correct
fufeck Jul 17, 2024
12d08e1
c
fufeck Jul 17, 2024
b4c2580
add banId
fufeck Jul 17, 2024
8b854f1
correct server tiles
fufeck Jul 17, 2024
e141d0b
correct extend
fufeck Jul 17, 2024
678a5b8
replace uuid to objectId
fufeck Jul 22, 2024
7308e3b
correct insert/update positions
fufeck Jul 22, 2024
65dd3e9
correct import many
fufeck Jul 22, 2024
c5afcfd
add import positions
fufeck Jul 22, 2024
8ab7d67
create/update voie
fufeck Jul 22, 2024
b91d5f8
create/update toponyme
fufeck Jul 22, 2024
e6a7a29
optional function in entities
fufeck Jul 22, 2024
601d305
correct batch numeros toponyme
fufeck Jul 22, 2024
c717cd6
correct create update numero
fufeck Jul 22, 2024
fc787c8
correct delete numero
fufeck Jul 22, 2024
8f7f072
soft delete toponyme
fufeck Jul 22, 2024
7385247
correct soft delete voie
fufeck Jul 22, 2024
8fa298d
correct route find all bal deleted
fufeck Jul 22, 2024
af84e55
correct trash voie
fufeck Jul 22, 2024
23b285d
delete batch
fufeck Jul 22, 2024
503b100
correct batch
fufeck Jul 23, 2024
2525137
correct import many toponyme
fufeck Jul 23, 2024
de43699
Merge branch 'master' into fufeck_migration_postgres
fufeck Jul 23, 2024
eee6e64
start test
fufeck Jul 23, 2024
a7996f9
correct test bases_locales
fufeck Jul 23, 2024
d4d0deb
correct test toponyme
fufeck Jul 23, 2024
c14c736
correct test voie
fufeck Jul 23, 2024
8382678
correct test numeros
fufeck Jul 23, 2024
1bb96cb
correct test habilitation
fufeck Jul 23, 2024
c788b2d
correct test publication
fufeck Jul 23, 2024
b387017
add test stats
fufeck Jul 24, 2024
685390a
correct test ci
fufeck Jul 24, 2024
716a870
Merge branch 'master' into fufeck_migration_postgres
fufeck Jul 24, 2024
1246e6c
correct build node 22
fufeck Jul 24, 2024
ac5c245
correct await
fufeck Jul 24, 2024
e0e6db9
correct connection and migration typeorm
fufeck Jul 24, 2024
4eb4ebd
start cron
fufeck Jul 24, 2024
9773684
add cache to cron
fufeck Jul 29, 2024
234af2f
correct test
fufeck Jul 29, 2024
dcf3bae
finish cron
fufeck Jul 29, 2024
3cd22f0
finish test cron
fufeck Jul 29, 2024
1d28947
test cron
fufeck Jul 29, 2024
61669b0
correct build cron
fufeck Jul 29, 2024
cf6846c
correct cache string redis
fufeck Jul 29, 2024
a120b43
index and rank
fufeck Jul 30, 2024
7d1da03
add migration to module
fufeck Jul 30, 2024
4a355c2
test email to
fufeck Jul 30, 2024
3eb3a8d
correct rank
fufeck Jul 30, 2024
cf9c4c1
correct mail
fufeck Jul 30, 2024
a99e8f3
correct return bug jules
fufeck Jul 30, 2024
d2a8ee1
delete schemas
fufeck Jul 31, 2024
cf84b24
add migration in code
fufeck Jul 31, 2024
8404d50
delete bal_id to numero entity
fufeck Aug 19, 2024
873bd4d
correct test
fufeck Aug 21, 2024
c55afad
correct lint
fufeck Aug 21, 2024
39e0183
order numeros
fufeck Aug 26, 2024
b7f1cf4
correct batch numero -> toponyme null
fufeck Aug 26, 2024
f6111ec
correct order csv liste voies
fufeck Aug 26, 2024
64c2808
Merge branch 'master' into fufeck_migration_postgres
fufeck Aug 26, 2024
445f92f
correct bug date updatedAt and sync.currentUpdated
fufeck Aug 26, 2024
c4798cd
correct test
fufeck Aug 26, 2024
f126acd
correct bases_locales updateOne
fufeck Aug 27, 2024
e5ca0c0
correct test
fufeck Aug 27, 2024
3568ee4
refacto migration initialization
fufeck Aug 27, 2024
c6e1cb0
update README
fufeck Aug 27, 2024
9ce7a8a
ci: correct coverage soundcloud
fufeck Aug 28, 2024
ccea6e6
correct alert souncloud
fufeck Aug 28, 2024
0e35609
correct alert souncloud part 2
fufeck Aug 28, 2024
0701a9a
correct object id mongo length in postgres
fufeck Sep 2, 2024
718ffb8
delete mongoose
fufeck Sep 2, 2024
8e65883
email case insencitive
fufeck Sep 2, 2024
0c8cb5a
change migration
fufeck Sep 2, 2024
d86e777
change index
fufeck Sep 3, 2024
ee085f3
correct mail balId
fufeck Sep 4, 2024
a5b8f7c
add space in numero and suffixe in numeroComplet
fufeck Sep 4, 2024
d6fdaf5
feat: route search numeros by polygon
fufeck Sep 9, 2024
dfb4e01
Merge branch 'master' into fufeck_feat_route-search-numero-by-polygon
fufeck Sep 11, 2024
07df835
Merge branch 'master' into fufeck_feat_route-search-numero-by-polygon
fufeck Sep 30, 2024
ed424e5
Merge branch 'master' into fufeck_feat_route-search-numero-by-polygon
fufeck Oct 14, 2024
6cc3602
Merge branch 'master' into fufeck_feat_route-search-numero-by-polygon
fufeck Oct 22, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions apps/api/src/modules/base_locale/base_locale.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ import { RecoverBaseLocaleDTO } from './dto/recover_base_locale.dto';
import { AllDeletedInBalDTO } from './dto/all_deleted_in_bal.dto';
import { BatchNumeroResponseDTO } from '../numeros/dto/batch_numero_response.dto';
import { isSuperAdmin } from '@/lib/utils/is-admin.utils';
import { SearchNumeroDTO } from '../numeros/dto/search_numero.dto';
import { Numero } from '@/shared/entities/numero.entity';

@ApiTags('bases-locales')
@Controller('bases-locales')
Expand Down Expand Up @@ -463,6 +465,29 @@ export class BaseLocaleController {
res.status(HttpStatus.OK).json(allDeleted);
}

@Put(':baseLocaleId/numeros')
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Un put pour de la recherche ça me parait pas terrible, on peut pas passer le tableau de coordonnées dans l'URL du GET?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aussi je suis surpris qu'on doive faire un endpoint pour ça. Y'a pas moyen de récupérer les numéros à l'intérieur d'un polygone directement côté front avec maplibre?

Copy link
Collaborator Author

@fufeck fufeck Oct 23, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alors j'ai utilisé un PUT parce que j'imagine que si la personne fait un polygon complexe (avec beaucoup de coordonées longues) la limit de 2000 caractère dans l'url peut sauter. Après c'est peut être pas utile a toi de me dire

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On a pas de route qui retourne les numéros d'une bases_locales et on n peut pas se fier au tuile car il y a seulement les features (numeros) visiblent sur la carte qui sont chargés sur la carte.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm je comprends pas trop. De toute façon l'utilisateur va dessiner le polygone en fonction de ce qui est visible sur la carte.
Tu penses qu'il faut aussi ajouter les numéros supprimés ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Après ok pour le PUT même si ça me parait un peu overkill, je pense pas qu'on est des polygones qui dépassent les 20 points

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Il ne va pas forcement dessiner sur un endroit visible au moment du calcule, si il part sur un coté ou dézoom pour rajouter le dernier point. C'est un peut tirer par les cheveux mais ca peut arriver

@ApiOperation({
summary: 'Search numero',
operationId: 'searchNumeros',
})
@ApiParam({ name: 'baseLocaleId', required: true, type: String })
@ApiBody({ type: SearchNumeroDTO, required: true })
@ApiResponse({ status: HttpStatus.OK, type: Numero, isArray: true })
@ApiBearerAuth('admin-token')
@UseGuards(AdminGuard)
async searchNumeros(
@Req() req: CustomRequest,
@Body() searchNumeroDTO: SearchNumeroDTO,
@Res() res: Response,
) {
const result: Numero[] =
await this.numeroService.findManyWherePositionInPolygon(
req.baseLocale.id,
searchNumeroDTO.polygon,
);
res.status(HttpStatus.OK).json(result);
}

@Put(':baseLocaleId/numeros/uncertify-all')
@ApiOperation({
summary: 'Uncertify all numeros in Bal',
Expand Down
11 changes: 11 additions & 0 deletions apps/api/src/modules/numeros/dto/search_numero.dto.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { ApiProperty } from '@nestjs/swagger';

export class SearchNumeroDTO {
@ApiProperty({
type: [Number],
required: true,
nullable: false,
isArray: true,
})
polygon: number[][];
}
18 changes: 18 additions & 0 deletions apps/api/src/modules/numeros/numero.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,24 @@ export class NumeroService {
return query.getMany();
}

async findManyWherePositionInPolygon(
balId: string,
polygon: number[][],
): Promise<Numero[]> {
const linestring: string = polygon
.map((arr) => `${arr[0]} ${arr[1]}`)
.join(',');
// Requète postgis qui permet de récupèré les numeros dans un polygon simple
const query = this.numerosRepository
.createQueryBuilder('numeros')
.leftJoinAndSelect('numeros.positions', 'positions')
.where('numeros.balId = :balId', { balId })
.andWhere(
`ST_Contains(ST_Polygon('LINESTRING(${linestring})'::geometry, 4326), positions.point)`,
);
return query.getMany();
}

public async count(where: FindOptionsWhere<Numero>): Promise<number> {
return this.numerosRepository.count({ where });
}
Expand Down
Loading