Skip to content

Commit 722adb2

Browse files
committed
Add direct connections API endpoint and update repository
1 parent 496204d commit 722adb2

File tree

3 files changed

+14
-7
lines changed

3 files changed

+14
-7
lines changed

src/main/java/org/couchbase/quickstart/springdata/controller/AirportController.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@
33
import java.util.Optional;
44

55
import javax.validation.Valid;
6+
import java.util.stream.Collectors;
67

78
import org.couchbase.quickstart.springdata.models.Airport;
89
import org.couchbase.quickstart.springdata.services.AirportService;
10+
import org.couchbase.quickstart.springdata.models.Route;
911
import org.springframework.dao.DataRetrievalFailureException;
1012
import org.springframework.data.domain.Page;
1113
import org.springframework.data.domain.PageRequest;
1214
import org.springframework.http.HttpStatus;
1315
import org.springframework.http.ResponseEntity;
16+
1417
import org.springframework.web.bind.annotation.DeleteMapping;
1518
import org.springframework.web.bind.annotation.GetMapping;
1619
import org.springframework.web.bind.annotation.PathVariable;
@@ -123,13 +126,15 @@ public ResponseEntity<Page<Airport>> listAirports(@RequestParam(defaultValue = "
123126
}
124127

125128
@GetMapping("/direct-connections")
126-
public ResponseEntity<Page<Airport>> listDirectConnections(
127-
@RequestParam String airport,
129+
public ResponseEntity<Page<String>> listDirectConnections(
130+
@RequestParam String airportCode,
128131
@RequestParam(defaultValue = "0") int page,
129132
@RequestParam(defaultValue = "10") int size) {
130133
try {
131-
Page<Airport> airports = airportService.getDirectConnections(airport, PageRequest.of(page, size));
132-
return new ResponseEntity<>(airports, HttpStatus.OK);
134+
Page<Route> airports = airportService.getDirectConnections(airportCode, PageRequest.of(page, size));
135+
Page<String> directConnections = airports.map(Route::getDestinationAirport);
136+
return new ResponseEntity<>(directConnections, HttpStatus.OK);
137+
133138
} catch (Exception e) {
134139
log.error(INTERNAL_SERVER_ERROR, e);
135140
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);

src/main/java/org/couchbase/quickstart/springdata/repository/AirportRepository.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.couchbase.quickstart.springdata.repository;
22

33
import org.couchbase.quickstart.springdata.models.Airport;
4+
import org.couchbase.quickstart.springdata.models.Route;
45
import org.springframework.data.couchbase.repository.Collection;
56
import org.springframework.data.couchbase.repository.CouchbaseRepository;
67
import org.springframework.data.couchbase.repository.Query;
@@ -21,10 +22,10 @@ public interface AirportRepository extends CouchbaseRepository<Airport, String>
2122
@Query("#{#n1ql.selectEntity}")
2223
Page<Airport> findAll(Pageable pageable);
2324

24-
@Query("SELECT DISTINCT META(airport).id AS __id,airport.* " +
25+
@Query("SELECT DISTINCT META(route).id as __id,route.* " +
2526
"FROM airport as airport " +
2627
"JOIN route as route ON airport.faa = route.sourceairport " +
2728
"WHERE airport.faa = $1 AND route.stops = 0")
28-
Page<Airport> getDirectConnections(String targetAirportCode, Pageable pageable);
29+
Page<Route> getDirectConnections(String targetAirportCode, Pageable pageable);
2930

3031
}

src/main/java/org/couchbase/quickstart/springdata/services/AirportService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.Optional;
44

55
import org.couchbase.quickstart.springdata.models.Airport;
6+
import org.couchbase.quickstart.springdata.models.Route;
67
import org.couchbase.quickstart.springdata.repository.AirportRepository;
78
import org.springframework.data.domain.Page;
89
import org.springframework.data.domain.Pageable;
@@ -42,7 +43,7 @@ public Airport updateAirport(String id, Airport airport) {
4243
return airportRepository.save(airport);
4344
}
4445

45-
public Page<Airport> getDirectConnections(String id, Pageable pageable) {
46+
public Page<Route> getDirectConnections(String id, Pageable pageable) {
4647
return airportRepository.getDirectConnections(id, pageable);
4748
}
4849

0 commit comments

Comments
 (0)