66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
Delete,
|
|
Get,
|
|
Param,
|
|
ParseUUIDPipe,
|
|
Put,
|
|
Query,
|
|
Req,
|
|
} from '@nestjs/common';
|
|
import { RequirePermissions } from '../authorization/decorators/require-permissions.decorator';
|
|
import { CurrentAuth } from '../auth/decorators/current-auth.decorator';
|
|
import type {
|
|
AuthPrincipal,
|
|
RequestWithContext,
|
|
} from '../common/http/request-context';
|
|
import { AssetGeometriesService } from './asset-geometries.service';
|
|
import { MapAssetsQueryDto } from './dto/map-assets-query.dto';
|
|
import { UpsertAssetGeometryDto } from './dto/upsert-asset-geometry.dto';
|
|
|
|
@Controller('assets')
|
|
export class AssetGeometriesController {
|
|
constructor(private readonly geometries: AssetGeometriesService) {}
|
|
|
|
@Get(':id/geometry')
|
|
@RequirePermissions('assets.read')
|
|
get(
|
|
@Param('id', new ParseUUIDPipe({ version: '4' })) id: string,
|
|
) {
|
|
return this.geometries.get(id);
|
|
}
|
|
|
|
@Put(':id/geometry')
|
|
@RequirePermissions('assets.update_geometry')
|
|
upsert(
|
|
@Param('id', new ParseUUIDPipe({ version: '4' })) id: string,
|
|
@Body() dto: UpsertAssetGeometryDto,
|
|
@CurrentAuth() principal: AuthPrincipal,
|
|
@Req() request: RequestWithContext,
|
|
) {
|
|
return this.geometries.upsert(id, dto, principal, request);
|
|
}
|
|
|
|
@Delete(':id/geometry')
|
|
@RequirePermissions('assets.update_geometry')
|
|
remove(
|
|
@Param('id', new ParseUUIDPipe({ version: '4' })) id: string,
|
|
@CurrentAuth() principal: AuthPrincipal,
|
|
@Req() request: RequestWithContext,
|
|
) {
|
|
return this.geometries.remove(id, principal, request);
|
|
}
|
|
}
|
|
|
|
@Controller('map/assets')
|
|
export class MapAssetsController {
|
|
constructor(private readonly geometries: AssetGeometriesService) {}
|
|
|
|
@Get()
|
|
@RequirePermissions('assets.read')
|
|
map(@Query() query: MapAssetsQueryDto) {
|
|
return this.geometries.map(query);
|
|
}
|
|
}
|