@@ -56,60 +56,83 @@ public ResponseEntity<Airline> getAirline(@PathVariable String id) {
5656
5757 @ PostMapping ("/{id}" )
5858 public ResponseEntity <Airline > createAirline (@ PathVariable String id , @ RequestBody Airline airline ) {
59- airlineCol .insert (id , airline );
60- Airline createdAirline = airlineCol .get (id ).contentAs (Airline .class );
61-
62- return ResponseEntity .created (URI .create ("/api/v1/airline/" + id )).body (createdAirline );
59+ try {
60+ airlineCol .insert (id , airline );
61+ Airline createdAirline = airlineCol .get (id ).contentAs (Airline .class );
62+ return ResponseEntity .created (new URI ("/api/v1/airline/" + id )).body (createdAirline );
63+ } catch (Exception e ) {
64+ return new ResponseEntity <>(HttpStatus .CONFLICT );
65+ }
6366
6467 }
6568
6669 @ PutMapping ("/{id}" )
6770 public ResponseEntity <Airline > updateAirline (@ PathVariable String id , @ RequestBody Airline airline ) {
68- airlineCol .replace (id , airline );
69- Airline updatedAirline = airlineCol .get (id ).contentAs (Airline .class );
70- return new ResponseEntity <>(updatedAirline , HttpStatus .OK );
71+ try {
72+ airlineCol .replace (id , airline );
73+ Airline updatedAirline = airlineCol .get (id ).contentAs (Airline .class );
74+ return new ResponseEntity <>(updatedAirline , HttpStatus .OK );
75+ } catch (Exception e ) {
76+ return new ResponseEntity <>(HttpStatus .NOT_FOUND );
77+ }
7178 }
7279
7380 @ DeleteMapping ("/{id}" )
7481 public ResponseEntity <Void > deleteAirline (@ PathVariable String id ) {
75- airlineCol .remove (id );
76- return new ResponseEntity <>(HttpStatus .NO_CONTENT );
82+ try {
83+ airlineCol .remove (id );
84+ return new ResponseEntity <>(HttpStatus .NO_CONTENT );
85+ } catch (Exception e ) {
86+ return new ResponseEntity <>(HttpStatus .NOT_FOUND );
87+ }
7788 }
7889
7990 @ GetMapping ("/list" )
8091 public ResponseEntity <List <Airline >> listAirlines () {
81- String statement = "SELECT airline.id, airline.type, airline.name, airline.iata, airline.icao, airline.callsign, airline.country FROM `"
82- + dbProperties .getBucketName () + "`.`inventory`.`airline`" ;
83- List <Airline > airlines = cluster
84- .query (statement , QueryOptions .queryOptions ().scanConsistency (QueryScanConsistency .REQUEST_PLUS ))
85- .rowsAs (Airline .class );
86- return new ResponseEntity <>(airlines , HttpStatus .OK );
92+ try {
93+ String statement = "SELECT airline.id, airline.type, airline.name, airline.iata, airline.icao, airline.callsign, airline.country FROM `"
94+ + dbProperties .getBucketName () + "`.`inventory`.`airline`" ;
95+ List <Airline > airlines = cluster
96+ .query (statement , QueryOptions .queryOptions ().scanConsistency (QueryScanConsistency .REQUEST_PLUS ))
97+ .rowsAs (Airline .class );
98+ return new ResponseEntity <>(airlines , HttpStatus .OK );
99+ } catch (Exception e ) {
100+ return new ResponseEntity <>(HttpStatus .NOT_FOUND );
101+ }
87102 }
88103
89104 @ GetMapping ("/country/{country}" )
90105 public ResponseEntity <List <Airline >> listAirlinesByCountry (@ PathVariable String country ) {
91- String statement = "SELECT airline.id, airline.type, airline.name, airline.iata, airline.icao, airline.callsign, airline.country FROM `"
92- + dbProperties .getBucketName () + "`.`inventory`.`airline` WHERE country = '" + country + "'" ;
93- List <Airline > airlines = cluster
94- .query (statement , QueryOptions .queryOptions ().scanConsistency (QueryScanConsistency .REQUEST_PLUS )
95- .parameters (JsonObject .create ().put ("country" , country )))
96- .rowsAs (Airline .class );
97- return new ResponseEntity <>(airlines , HttpStatus .OK );
106+ try {
107+ String statement = "SELECT airline.id, airline.type, airline.name, airline.iata, airline.icao, airline.callsign, airline.country FROM `"
108+ + dbProperties .getBucketName () + "`.`inventory`.`airline` WHERE country = '" + country + "'" ;
109+ List <Airline > airlines = cluster
110+ .query (statement , QueryOptions .queryOptions ().scanConsistency (QueryScanConsistency .REQUEST_PLUS )
111+ .parameters (JsonObject .create ().put ("country" , country )))
112+ .rowsAs (Airline .class );
113+ return new ResponseEntity <>(airlines , HttpStatus .OK );
114+ } catch (Exception e ) {
115+ return new ResponseEntity <>(HttpStatus .NOT_FOUND );
116+ }
98117 }
99118
100119 @ GetMapping ("/destination/{destinationAirport}" )
101120 public ResponseEntity <List <Airline >> listAirlinesByDestinationAirport (@ PathVariable String destinationAirport ) {
102- 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 `"
103- + dbProperties .getBucketName () + "`.`inventory`.`route` JOIN `" + dbProperties .getBucketName ()
104- + "`.`inventory`.`airline` ON route.airlineid = META(airline).id WHERE route.destinationairport = "
105- + destinationAirport + ") AS subquery JOIN `" + dbProperties .getBucketName ()
106- + "`.`inventory`.`airline` AS air ON META(air).id = subquery.airlineId" ;
107- List <Airline > airlines = cluster
108- .query (statement ,
109- QueryOptions .queryOptions ().scanConsistency (QueryScanConsistency .REQUEST_PLUS )
110- .parameters (JsonObject .create ().put ("destinationAirport" , destinationAirport )))
111- .rowsAs (Airline .class );
112- return new ResponseEntity <>(airlines , HttpStatus .OK );
121+ try {
122+ 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 `"
123+ + dbProperties .getBucketName () + "`.`inventory`.`route` JOIN `" + dbProperties .getBucketName ()
124+ + "`.`inventory`.`airline` ON route.airlineid = META(airline).id WHERE route.destinationairport = "
125+ + destinationAirport + ") AS subquery JOIN `" + dbProperties .getBucketName ()
126+ + "`.`inventory`.`airline` AS air ON META(air).id = subquery.airlineId" ;
127+ List <Airline > airlines = cluster
128+ .query (statement ,
129+ QueryOptions .queryOptions ().scanConsistency (QueryScanConsistency .REQUEST_PLUS )
130+ .parameters (JsonObject .create ().put ("destinationAirport" , destinationAirport )))
131+ .rowsAs (Airline .class );
132+ return new ResponseEntity <>(airlines , HttpStatus .OK );
133+ } catch (Exception e ) {
134+ return new ResponseEntity <>(HttpStatus .NOT_FOUND );
135+ }
113136 }
114137
115138}
0 commit comments