@@ -14,7 +14,7 @@ def show
1414 render json : { message : "Route with ID #{ params [ :id ] } not found" } , status : :not_found
1515 end
1616 rescue Couchbase ::Error ::DocumentNotFound => e
17- render json : { error : " Route not found" , message : e . message } , status : :not_found
17+ render json : { error : ' Route not found' , message : e . message } , status : :not_found
1818 rescue StandardError => e
1919 render json : { error : 'Internal server error' , message : e . message } , status : :internal_server_error
2020 end
@@ -25,11 +25,12 @@ def create
2525 if @route
2626 render json : { message : "Route with ID #{ params [ :id ] } already exists" } , status : :conflict
2727 else
28- @route = Route . create ( route_params )
29- if @route
28+ @route = Route . new ( route_params )
29+ if @route . save
3030 render json : @route , status : :created
3131 else
32- render json : { error : 'Failed to create route' } , status : :bad_request
32+ render json : { error : 'Failed to create route' , message : @route . errors . full_messages } ,
33+ status : :bad_request
3334 end
3435 end
3536 rescue ArgumentError => e
@@ -38,21 +39,14 @@ def create
3839 render json : { error : 'Internal server error' , message : e . message } , status : :internal_server_error
3940 end
4041
41- # PATCH/ PUT /api/v1/routes/{id}
42+ # PUT /api/v1/routes/{id}
4243 def update
43- if @route
44- if @route . update ( route_params )
45- render json : @route . attributes . except ( 'id' ) , status : :ok
46- else
47- render json : { message : 'Failed to update route' } , status : :bad_request
48- end
44+ @route = Route . new ( route_params )
45+ if @route . save
46+ render json : @route . attributes . except ( 'id' ) , status : :ok
4947 else
50- @route = Route . create ( route_params )
51- if @route
52- render json : @route . attributes . except ( 'id' ) , status : :ok
53- else
54- render json : { message : 'Route already exists' } , status : :conflict
55- end
48+ render json : { error : 'Invalid request' , message : @route . errors . full_messages } ,
49+ status : :bad_request
5650 end
5751 rescue ArgumentError => e
5852 render json : { error : 'Invalid request' , message : e . message } , status : :bad_request
@@ -67,17 +61,46 @@ def destroy
6761 if @route . destroy
6862 render json : { message : 'Route deleted successfully' } , status : :accepted
6963 else
70- render json : { message : 'Failed to delete route' } , status : :bad_request
64+ render json : { error : 'Failed to delete route' , message : @route . errors . full_messages } ,
65+ status : :bad_request
7166 end
7267 else
7368 render json : { message : "Route with ID #{ params [ :id ] } not found" } , status : :not_found
7469 end
7570 rescue Couchbase ::Error ::DocumentNotFound => e
76- render json : { error : " Route not found" , message : e . message } , status : :not_found
71+ render json : { error : ' Route not found' , message : e . message } , status : :not_found
7772 rescue StandardError => e
7873 render json : { error : 'Internal server error' , message : e . message } , status : :internal_server_error
7974 end
8075
76+ # GET /api/v1/routes/list
77+ def index
78+ routes = Route . all
79+ formatted_routes = routes . map do |route |
80+ {
81+ id : route . id ,
82+ type : route . type ,
83+ airline : route . airline ,
84+ airlineid : route . airlineid ,
85+ sourceairport : route . sourceairport ,
86+ destinationairport : route . destinationairport ,
87+ stops : route . stops ,
88+ equipment : route . equipment ,
89+ schedule : route . schedule . map do |schedule_detail |
90+ {
91+ day : schedule_detail . day ,
92+ utc : schedule_detail . utc ,
93+ flight : schedule_detail . flight
94+ }
95+ end ,
96+ distance : route . distance
97+ }
98+ end
99+ render json : formatted_routes
100+ rescue StandardError => e
101+ render json : { error : e . message } , status : :internal_server_error
102+ end
103+
81104 private
82105
83106 def set_route
@@ -87,7 +110,8 @@ def set_route
87110 end
88111
89112 def route_params
90- params . require ( :route ) . permit ( :id , :type , :airline , :airlineid , :sourceairport , :destinationairport , :stops , :equipment , :distance , schedule : [ :day , :utc , :flight ] )
113+ params . require ( :route ) . permit ( :id , :type , :airline , :airlineid , :sourceairport , :destinationairport ,
114+ :stops , :equipment , :distance , schedule : %i[ day utc flight ] )
91115 end
92116 end
93117 end
0 commit comments