Add PostgreSQL database option and more booking flow functionalities
This commit is contained in:
75
servers/grpc/server/book.go
Normal file
75
servers/grpc/server/book.go
Normal file
@@ -0,0 +1,75 @@
|
||||
package grpcserver
|
||||
|
||||
import (
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"git.coopgo.io/coopgo-platform/carpool-service/servers/grpc/proto"
|
||||
"github.com/rs/zerolog/log"
|
||||
"google.golang.org/grpc/codes"
|
||||
"google.golang.org/grpc/status"
|
||||
)
|
||||
|
||||
func (s *CarpoolServiceServerImpl) CreateBooking(ctx context.Context, req *proto.CreateBookingRequest) (*proto.CreateBookingResponse, error) {
|
||||
booking := req.Booking.ToOCSS()
|
||||
_, err := s.Handler.Book(booking)
|
||||
if err != nil {
|
||||
return nil, status.Errorf(codes.Internal, "could not create booking - %s", err.Error())
|
||||
}
|
||||
return &proto.CreateBookingResponse{}, nil
|
||||
}
|
||||
|
||||
func (s *CarpoolServiceServerImpl) GetUserBookings(ctx context.Context, req *proto.GetUserBookingsRequest) (*proto.GetUserBookingsResponse, error) {
|
||||
log.Debug().
|
||||
Str("user", req.UserId).
|
||||
Str("mindate", req.MinDate.AsTime().Format(time.RFC3339)).
|
||||
Any("maxdate", req.MaxDate).
|
||||
Msg("grpc server - GetUserBookings")
|
||||
|
||||
userid := req.UserId
|
||||
var mindate *time.Time
|
||||
if req.MinDate != nil {
|
||||
d := req.MinDate.AsTime()
|
||||
mindate = &d
|
||||
}
|
||||
var maxdate *time.Time
|
||||
if req.MaxDate != nil {
|
||||
d := req.MaxDate.AsTime()
|
||||
maxdate = &d
|
||||
}
|
||||
|
||||
bookings, err := s.Handler.GetUserBookings(userid, mindate, maxdate)
|
||||
if err != nil {
|
||||
return nil, status.Errorf(codes.Internal, "error retrieving user bookings - %s", err.Error())
|
||||
}
|
||||
|
||||
results := []*proto.CarpoolServiceBooking{}
|
||||
|
||||
for _, b := range bookings {
|
||||
nb := proto.BookingFromInternal(b)
|
||||
results = append(results, nb)
|
||||
}
|
||||
return &proto.GetUserBookingsResponse{
|
||||
Bookings: results,
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (s *CarpoolServiceServerImpl) UpdateBooking(ctx context.Context, req *proto.UpdateBookingRequest) (*proto.UpdateBookingResponse, error) {
|
||||
err := s.Handler.UpdateBookingStatus(req.BookingId, req.Status.ToOCSS())
|
||||
if err != nil {
|
||||
return nil, status.Errorf(codes.Internal, "could not update booking status")
|
||||
}
|
||||
return &proto.UpdateBookingResponse{}, nil
|
||||
}
|
||||
|
||||
func (s *CarpoolServiceServerImpl) GetBooking(ctx context.Context, req *proto.GetBookingRequest) (*proto.GetBookingResponse, error) {
|
||||
result, err := s.Handler.GetBooking(req.BookingId)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("issue retrieving booking in handler")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &proto.GetBookingResponse{
|
||||
Booking: proto.BookingFromInternal(*result),
|
||||
}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user