sql error handling: no rows + duplicated key

This commit is contained in:
2023-10-20 21:34:20 +02:00
parent 513b048e49
commit d12c55d740
14 changed files with 88 additions and 2564 deletions

View File

@@ -44,7 +44,7 @@ func (s *BookingsFilterAPIService) FilterBookingsByStatus(ctx context.Context, o
if err != nil {
fmt.Println(err)
if strings.Contains(err.Error(), " no rows in result set") {
return Response(http.StatusBadRequest, "ID not found in the database"), nil
return Response(http.StatusBadRequest, "no related data recheck your parameters"), nil
} else {
return Response(http.StatusInternalServerError, nil), nil
}

View File

@@ -19,6 +19,8 @@ import (
"solidarity-service/handler"
"solidarity-service/internal"
"solidarity-service/storage"
"solidarity-service/utils"
"strings"
)
// DriverAvailabilityAndScheduleAPIService is a service that implements the logic for the DriverAvailabilityAndScheduleAPIServicer
@@ -77,6 +79,9 @@ func (s *DriverAvailabilityAndScheduleAPIService) DriverPunctualAvailabilitiesPo
driver.Car.Model = driverPunctualAvailabilitiesRequest.Car.Model
err := s.storage.CreateDriver(driver)
if err != nil {
if strings.Contains(err.Error(), utils.SQL_DUPLICATE) {
return Response(http.StatusBadRequest, "ID already in use"), nil
}
return Response(http.StatusInternalServerError, nil), errors.New("DriverPunctualAvailabilitiesPost internal server error")
} else {
return Response(201, "Punctual driver availabilities set successfully"), nil
@@ -120,6 +125,9 @@ func (s *DriverAvailabilityAndScheduleAPIService) DriverRegularAvailabilitiesPos
driver.Car.Model = driverRegularAvailabilitiesRequest.Car.Model
err := s.storage.CreateDriver(driver)
if err != nil {
if strings.Contains(err.Error(), utils.SQL_DUPLICATE) {
return Response(http.StatusBadRequest, "ID already in use"), nil
}
return Response(http.StatusInternalServerError, nil), errors.New("DriverPunctualAvailabilitiesPost internal server error")
} else {
return Response(201, "Regular driver availabilities set successfully"), nil

View File

@@ -18,6 +18,7 @@ import (
"solidarity-service/handler"
"solidarity-service/internal"
"solidarity-service/storage"
"solidarity-service/utils"
"strings"
)
@@ -44,7 +45,7 @@ func (s *InteractAPIService) GetBookings(ctx context.Context, operator string, b
booking, err := s.storage.GetBooking(bookingId)
if err != nil {
if strings.Contains(err.Error(), " no rows in result set") {
return Response(http.StatusBadRequest, "ID not found in the database"), nil
return Response(http.StatusBadRequest, "no related data recheck your parameters"), nil
} else {
return Response(http.StatusInternalServerError, nil), errors.New("DriverPunctualAvailabilitiesPost internal server error")
}
@@ -114,7 +115,7 @@ func (s *InteractAPIService) PatchBookings(ctx context.Context, operator string,
fmt.Println(err)
if err != nil {
if strings.Contains(err.Error(), " no rows in result set") {
return Response(http.StatusBadRequest, "ID not found in the database"), nil
return Response(http.StatusBadRequest, "no related data recheck your params"), nil
}
return Response(http.StatusInternalServerError, nil), nil
}
@@ -131,6 +132,9 @@ func (s *InteractAPIService) PostBookings(ctx context.Context, bookingRequest Bo
booking.Operator = bookingRequest.Operator
err := s.storage.CreateBooking(booking)
if err != nil {
if strings.Contains(err.Error(), utils.SQL_DUPLICATE) {
return Response(http.StatusBadRequest, "ID already in use"), nil
}
return Response(http.StatusInternalServerError, nil), errors.New("PostBookings internal server error")
}
passenger, err := s.storage.GetPassenger(booking.Passenger_id)

View File

@@ -19,6 +19,8 @@ import (
"solidarity-service/handler"
"solidarity-service/internal"
"solidarity-service/storage"
"solidarity-service/utils"
"strings"
)
// PassengerTripRequestAPIService is a service that implements the logic for the PassengerTripRequestAPIServicer
@@ -73,6 +75,9 @@ func (s *PassengerTripRequestAPIService) PassengerPost(ctx context.Context, pass
passenger.Preferences.Music = passengerTripRequest.Preferences.Music
err := s.storage.CreatePassenger(passenger)
if err != nil {
if strings.Contains(err.Error(), utils.SQL_DUPLICATE) {
return Response(http.StatusBadRequest, "ID already in use"), nil
}
return Response(http.StatusInternalServerError, nil), errors.New("DriverPunctualAvailabilitiesPost internal server error")
} else {
return Response(201, "Trip request created"), nil