11package org .couchbase .quickstart .springboot .controllers ;
22
3- import java .util . Arrays ;
3+ import java .net . URI ;
44import java .util .List ;
5- import java .util .UUID ;
6-
7- import com .couchbase .client .core .error .DocumentNotFoundException ;
8- import com .couchbase .client .core .msg .kv .DurabilityLevel ;
9- import com .couchbase .client .java .Bucket ;
10- import com .couchbase .client .java .Cluster ;
11- import com .couchbase .client .java .Collection ;
12- import com .couchbase .client .java .json .JsonObject ;
13- import com .couchbase .client .java .query .QueryOptions ;
14- import com .couchbase .client .java .query .QueryScanConsistency ;
15- import com .couchbase .client .java .transactions .TransactionQueryOptions ;
16- import com .couchbase .client .java .transactions .config .TransactionOptions ;
175
186import org .couchbase .quickstart .springboot .configs .DBProperties ;
197import org .couchbase .quickstart .springboot .models .Route ;
208import org .springframework .http .HttpStatus ;
21- import org .springframework .http .MediaType ;
229import org .springframework .http .ResponseEntity ;
2310import org .springframework .web .bind .annotation .CrossOrigin ;
2411import org .springframework .web .bind .annotation .DeleteMapping ;
2815import org .springframework .web .bind .annotation .PutMapping ;
2916import org .springframework .web .bind .annotation .RequestBody ;
3017import org .springframework .web .bind .annotation .RequestMapping ;
31- import org .springframework .web .bind .annotation .RequestParam ;
3218import org .springframework .web .bind .annotation .RestController ;
3319
34- import io .swagger .annotations .ApiOperation ;
35- import io .swagger .annotations .ApiResponse ;
36- import io .swagger .annotations .ApiResponses ;
20+ import com .couchbase .client .java .Bucket ;
21+ import com .couchbase .client .java .Cluster ;
22+ import com .couchbase .client .java .Collection ;
23+ import com .couchbase .client .java .query .QueryOptions ;
24+ import com .couchbase .client .java .query .QueryScanConsistency ;
3725
26+ @ RestController
27+ @ CrossOrigin
28+ @ RequestMapping ("/api/v1/route" )
3829public class RouteController {
3930
4031 private Cluster cluster ;
@@ -52,37 +43,57 @@ public RouteController(Cluster cluster, Bucket bucket, DBProperties dbProperties
5243
5344 @ GetMapping ("/{id}" )
5445 public ResponseEntity <Route > getRoute (@ PathVariable String id ) {
55- Route createdRoute = routeCol .get (id ).contentAs (Route .class );
56- return new ResponseEntity <>(createdRoute , HttpStatus .CREATED );
46+ try {
47+ Route route = routeCol .get (id ).contentAs (Route .class );
48+ return new ResponseEntity <>(route , HttpStatus .OK );
49+ } catch (Exception e ) {
50+ return new ResponseEntity <>(HttpStatus .NOT_FOUND );
51+ }
5752 }
5853
5954 @ PostMapping ("/{id}" )
6055 public ResponseEntity <Route > createRoute (@ PathVariable String id , @ RequestBody Route route ) {
61- routeCol .insert (id , route );
62- Route createdRoute = routeCol .get (id ).contentAs (Route .class );
63- return new ResponseEntity <>(createdRoute , HttpStatus .CREATED );
56+ try {
57+ routeCol .insert (id , route );
58+ Route createdRoute = routeCol .get (id ).contentAs (Route .class );
59+ return ResponseEntity .created (new URI ("/api/v1/route/" + id )).body (createdRoute );
60+ } catch (Exception e ) {
61+ return new ResponseEntity <>(HttpStatus .CONFLICT );
62+ }
6463 }
6564
6665 @ PutMapping ("/{id}" )
6766 public ResponseEntity <Route > updateRoute (@ PathVariable String id , @ RequestBody Route route ) {
68- routeCol .replace (id , route );
69- Route updatedRoute = routeCol .get (id ).contentAs (Route .class );
70- return new ResponseEntity <>(updatedRoute , HttpStatus .OK );
67+ try {
68+ routeCol .replace (id , route );
69+ Route updatedRoute = routeCol .get (id ).contentAs (Route .class );
70+ return new ResponseEntity <>(updatedRoute , HttpStatus .OK );
71+ } catch (Exception e ) {
72+ return new ResponseEntity <>(HttpStatus .NOT_FOUND );
73+ }
7174 }
7275
7376 @ DeleteMapping ("/{id}" )
7477 public ResponseEntity <Void > deleteRoute (@ PathVariable String id ) {
75- routeCol .remove (id );
76- return new ResponseEntity <>(HttpStatus .NO_CONTENT );
78+ try {
79+ routeCol .remove (id );
80+ return new ResponseEntity <>(HttpStatus .NO_CONTENT );
81+ } catch (Exception e ) {
82+ return new ResponseEntity <>(HttpStatus .NOT_FOUND );
83+ }
7784 }
7885
7986 @ GetMapping ("/list" )
8087 public ResponseEntity <List <Route >> listRoutes () {
81- String statement = "SELECT airport.* FROM `" + dbProperties .getBucketName () + "`.`inventory`.`route`" ;
82- List <Route > routes = cluster
83- .query (statement , QueryOptions .queryOptions ().scanConsistency (QueryScanConsistency .REQUEST_PLUS ))
84- .rowsAs (Route .class );
85- return new ResponseEntity <>(routes , HttpStatus .OK );
88+ try {
89+ String statement = "SELECT airport.* FROM `" + dbProperties .getBucketName () + "`.`inventory`.`route`" ;
90+ List <Route > routes = cluster
91+ .query (statement , QueryOptions .queryOptions ().scanConsistency (QueryScanConsistency .REQUEST_PLUS ))
92+ .rowsAs (Route .class );
93+ return new ResponseEntity <>(routes , HttpStatus .OK );
94+ } catch (Exception e ) {
95+ return new ResponseEntity <>(HttpStatus .NOT_FOUND );
96+ }
8697 }
8798
8899}
0 commit comments