Skip to content

Commit 45d0bec

Browse files
committed
Airline join queries working + Capella Working
1 parent a288e7b commit 45d0bec

File tree

5 files changed

+31
-16
lines changed

5 files changed

+31
-16
lines changed

src/main/java/org/couchbase/quickstart/springboot/Application.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
import lombok.extern.slf4j.Slf4j;
99

10-
@SpringBootApplication(exclude = SecurityAutoConfiguration.class, proxyBeanMethods = false)
1110
@Slf4j
11+
@SpringBootApplication(exclude = SecurityAutoConfiguration.class, proxyBeanMethods = false)
1212
public class Application implements CommandLineRunner {
1313

1414
public static void main(String[] args) {

src/main/java/org/couchbase/quickstart/springboot/configs/DBProperties.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,5 @@ public class DBProperties {
1717
private String password;
1818
@Value("${spring.couchbase.bucket.name}")
1919
private String bucketName;
20-
@Value("${spring.couchbase.bucket.scope}")
21-
private String scopeName;
2220

2321
}

src/main/java/org/couchbase/quickstart/springboot/controllers/AirlineController.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,4 +134,17 @@ public ResponseEntity<List<Airline>> listAirlinesByCountry(@PathVariable String
134134
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
135135
}
136136
}
137+
138+
@Operation(summary = "List all airlines by destination airport")
139+
@GetMapping("/destination/{destinationAirport}")
140+
public ResponseEntity<List<Airline>> listAirlinesByDestinationAirport(
141+
@PathVariable String destinationAirport) {
142+
try {
143+
List<Airline> airlines = airlineService.listAirlinesByDestinationAirport(destinationAirport);
144+
return new ResponseEntity<>(airlines, HttpStatus.OK);
145+
} catch (Exception e) {
146+
log.error(INTERNAL_SERVER_ERROR + ": " + e.getMessage());
147+
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
148+
}
149+
}
137150
}

src/main/java/org/couchbase/quickstart/springboot/repositories/AirlineRepositoryImpl.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.couchbase.client.java.Bucket;
1010
import com.couchbase.client.java.Cluster;
1111
import com.couchbase.client.java.Collection;
12+
import com.couchbase.client.java.json.JsonArray;
1213
import com.couchbase.client.java.json.JsonObject;
1314
import com.couchbase.client.java.query.QueryOptions;
1415
import com.couchbase.client.java.query.QueryScanConsistency;
@@ -74,15 +75,19 @@ public List<Airline> findByCountry(String country) {
7475

7576
@Override
7677
public List<Airline> findByDestinationAirport(String destinationAirport) {
77-
String statement = "SELECT air.callsign, air.country, air.iata, air.icao, air.id, air.name, air.type FROM (SELECT DISTINCT META(airline).id AS airlineId FROM `"
78-
+ dbProperties.getBucketName() + "`.`inventory`.`route` JOIN `" + dbProperties.getBucketName()
79-
+ "`.`inventory`.`airline` ON route.airlineid = META(airline).id WHERE route.destinationairport = "
80-
+ destinationAirport + ") AS subquery JOIN `" + dbProperties.getBucketName()
81-
+ "`.`inventory`.`airline` AS air ON META(air).id = subquery.airlineId";
82-
return cluster
83-
.query(statement,
84-
QueryOptions.queryOptions().scanConsistency(QueryScanConsistency.REQUEST_PLUS)
85-
.parameters(JsonObject.create().put("destinationAirport", destinationAirport)))
78+
String statement = "SELECT air.callsign, air.country, air.iata, air.icao, air.id, air.name, air.type " +
79+
"FROM (SELECT DISTINCT META(airline).id AS airlineId " +
80+
" FROM `" + dbProperties.getBucketName() + "`.`inventory`.`route` " +
81+
" JOIN `" + dbProperties.getBucketName() + "`.`inventory`.`airline` " +
82+
" ON route.airlineid = META(airline).id " +
83+
" WHERE route.destinationairport = $1) AS subquery " +
84+
"JOIN `" + dbProperties.getBucketName() + "`.`inventory`.`airline` AS air " +
85+
"ON META(air).id = subquery.airlineId";
86+
87+
return cluster.query(
88+
statement,
89+
QueryOptions.queryOptions().parameters(JsonArray.from(destinationAirport))
90+
.scanConsistency(QueryScanConsistency.REQUEST_PLUS))
8691
.rowsAs(Airline.class);
8792
}
8893

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
spring.couchbase.bootstrap-hosts=localhost
1+
spring.couchbase.bootstrap-hosts=#######
22
spring.couchbase.bucket.name=travel-sample
33
spring.couchbase.bucket.user=kaustav
4-
spring.couchbase.bucket.scope=inventory
5-
spring.couchbase.bucket.password=password
6-
spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER
4+
spring.couchbase.bucket.password=#######
5+
spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER

0 commit comments

Comments
 (0)