mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-27 23:40:56 +00:00
57 lines
2.0 KiB
TypeScript
57 lines
2.0 KiB
TypeScript
import { Body, Controller, Get, Param, Post, Patch, Delete, UseGuards, Query } from '@nestjs/common';
|
|
import { ApiTags, ApiOperation, ApiBearerAuth, ApiQuery } from '@nestjs/swagger';
|
|
import { StationsService } from './stations.service';
|
|
import { CreateStationDto } from './stations.dto';
|
|
import { JwtGuard } from '../../common/jwt.guard';
|
|
|
|
@ApiTags('Stations')
|
|
@Controller('stations')
|
|
export class StationsController {
|
|
constructor(private service: StationsService) {}
|
|
|
|
@Get()
|
|
@ApiOperation({
|
|
summary: 'List all stations with country information',
|
|
description: 'Returns all stations on the Ethio-Djibouti Railway with country codes (ET for Ethiopia, DJ for Djibouti)'
|
|
})
|
|
@ApiQuery({ name: 'search', required: false, description: 'Search by station name or code' })
|
|
@ApiQuery({ name: 'country', required: false, description: 'Filter by country code (ET, DJ)' })
|
|
@ApiQuery({ name: 'operational', required: false, description: 'Filter by operational status (true, false)' })
|
|
findAll(
|
|
@Query('search') search?: string,
|
|
@Query('country') country?: string,
|
|
@Query('operational') operational?: string,
|
|
) {
|
|
return this.service.findAll({ search, country, operational });
|
|
}
|
|
|
|
@Get(':id')
|
|
@ApiOperation({
|
|
summary: 'Get station details by ID',
|
|
description: 'Returns station information including name, code, country, coordinates, and facilities'
|
|
})
|
|
findOne(@Param('id') id: string) { return this.service.findOne(id); }
|
|
|
|
@Post()
|
|
@UseGuards(JwtGuard)
|
|
@ApiBearerAuth('JWT-auth')
|
|
@ApiOperation({ summary: 'Create new station' })
|
|
create(@Body() dto: CreateStationDto) { return this.service.create(dto); }
|
|
|
|
@Patch(':id')
|
|
@UseGuards(JwtGuard)
|
|
@ApiBearerAuth('JWT-auth')
|
|
@ApiOperation({ summary: 'Update station' })
|
|
update(@Param('id') id: string, @Body() dto: Partial<CreateStationDto>) {
|
|
return this.service.update(id, dto);
|
|
}
|
|
|
|
@Delete(':id')
|
|
@UseGuards(JwtGuard)
|
|
@ApiBearerAuth('JWT-auth')
|
|
@ApiOperation({ summary: 'Delete station' })
|
|
remove(@Param('id') id: string) {
|
|
return this.service.remove(id);
|
|
}
|
|
}
|