Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import pl.skyroster.skyroster_backend.domain.model.Flight;
import pl.skyroster.skyroster_backend.domain.port.FlightRepository;
import pl.skyroster.skyroster_backend.generated.model.FlightResponse;
import pl.skyroster.skyroster_backend.infrastructure.mappers.AircraftResponseMapper;
import pl.skyroster.skyroster_backend.infrastructure.mappers.OperationalBaseInfoMapper;

import java.util.List;

Expand All @@ -16,7 +18,19 @@ public GetFlightsUseCase(FlightRepository flightRepository) {
}

@Transactional(readOnly = true)
public List<Flight> execute() {
return flightRepository.findAll();
public List<FlightResponse> execute() {
return flightRepository.findAll().stream().map(flight -> {
var aircraftResponse = AircraftResponseMapper.map(flight.getAircraft());

return new FlightResponse(
flight.getId(),
aircraftResponse,
flight.getFlightStart(),
flight.getFlightEnd(),
OperationalBaseInfoMapper.map(flight.getStartAirport()),
OperationalBaseInfoMapper.map(flight.getEndAirport()),
flight.getDescription()
);
}).toList();
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package pl.skyroster.skyroster_backend.domain.port;

import org.springframework.data.jpa.repository.JpaRepository;
import pl.skyroster.skyroster_backend.domain.model.Flight;

import java.util.List;
import java.util.UUID;

public interface FlightRepository {
public interface FlightRepository extends JpaRepository<Flight, UUID> {
List<Flight> findAll();
boolean existsByAircraftId(UUID aircraftId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import pl.skyroster.skyroster_backend.application.flight.GetFlightsUseCase;
import pl.skyroster.skyroster_backend.domain.model.Flight;
import pl.skyroster.skyroster_backend.generated.model.FlightResponse;

import java.util.List;

Expand All @@ -18,7 +18,7 @@ public FlightController(GetFlightsUseCase getFlightsUseCase) {
}

@GetMapping
public List<Flight> getFlights() {
public List<FlightResponse> getFlights() {
return getFlightsUseCase.execute();
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package pl.skyroster.skyroster_backend.infrastructure.mappers;

import pl.skyroster.skyroster_backend.domain.model.Aircraft;
import pl.skyroster.skyroster_backend.generated.model.AircraftResponse;

public class AircraftResponseMapper {
public static AircraftResponse map(Aircraft aircraft) {
return new AircraftResponse(
aircraft.getId(),
aircraft.getRegistrationNumber(),
AircraftTypeInfoMapper.map(aircraft.getAircraftType()),
OperationalBaseInfoMapper.map(aircraft.getOperationalBase())
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package pl.skyroster.skyroster_backend.infrastructure.mappers;

import pl.skyroster.skyroster_backend.domain.model.AircraftType;
import pl.skyroster.skyroster_backend.generated.model.AircraftTypeInfo;

public class AircraftTypeInfoMapper {
public static AircraftTypeInfo map(AircraftType aircraftType) {
return new AircraftTypeInfo(
aircraftType.getId(),
aircraftType.getIcaoCode(),
aircraftType.getName()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package pl.skyroster.skyroster_backend.infrastructure.mappers;

import pl.skyroster.skyroster_backend.domain.model.OperationalBase;
import pl.skyroster.skyroster_backend.generated.model.OperationalBaseInfo;

public class OperationalBaseInfoMapper {
public static OperationalBaseInfo map(OperationalBase operationalBase) {
return new OperationalBaseInfo(
operationalBase.getId(),
operationalBase.getIcaoCode(),
operationalBase.getName()
);
}
}
60 changes: 60 additions & 0 deletions skyroster-backend/src/main/resources/api/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,33 @@ paths:
schema:
$ref: '#/components/schemas/ErrorResponse'

/api/flights:
get:
operationId: displayFlights
tags: [ Flight ]
summary: Display flights timetable
responses:
'200':
description: List of flights
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/FlightResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'

/api/aircraft/{id}:
put:
operationId: updateAircraft
Expand Down Expand Up @@ -453,3 +480,36 @@ components:
$ref: '#/components/schemas/AircraftTypeInfo'
operationalBase:
$ref: '#/components/schemas/OperationalBaseInfo'

FlightResponse:
type: object
required:
- id
- aircraft
- pilot
- flightStart
- flightEnd
- startAirport
- endAirport
- description
properties:
id:
type: string
format: uuid
aircraft:
$ref: '#/components/schemas/AircraftResponse'
flightStart:
type: string
format: date-time
example: "2026-06-20T08:00:00Z"
flightEnd:
type: string
format: date-time
example: "2026-06-20T11:00:00Z"
startAirport:
$ref: '#/components/schemas/OperationalBaseInfo'
endAirport:
$ref: '#/components/schemas/OperationalBaseInfo'
description:
type: string
example: "Lot rejsowy Kraków - Gdańsk"
Loading