add getAllDrivers method

This commit is contained in:
2024-11-29 11:44:14 +01:00
parent f19ecbb2b4
commit b8e017b081
13 changed files with 707 additions and 504 deletions

View File

@@ -575,13 +575,13 @@ func (s PostgresqlStorage) GetBooking(id string) (booking internal.Booking, err
log.Error().Err(err).Msg(errMsg)
return internal.Booking{}, errors.New(errMsg + err.Error())
}
// passenger, err := s.GetPassenger(booking.Passenger.ID)
// if err != nil {
// errMsg := "Postgresql Storage GetBooking Error getting passenger"
// log.Error().Err(err).Msg(errMsg)
// return booking, errors.New(errMsg + err.Error())
// }
// booking.Passenger = passenger.Passenger
passenger, err := s.GetPassenger(booking.Passenger.ID)
if err != nil {
errMsg := "Postgresql Storage GetBooking Error getting passenger"
log.Error().Err(err).Msg(errMsg)
return booking, errors.New(errMsg + err.Error())
}
booking.Passenger = passenger.Passenger
driver, err := s.GetDriver(booking.Driver.ID)
if err != nil {
errMsg := "Postgresql Storage GetBooking Error getting driver"
@@ -677,20 +677,20 @@ func (s PostgresqlStorage) populateBookingDetails(booking internal.Booking, depa
errCh := make(chan error, 4) // Buffered channel to handle potential errors
// Concurrently fetch passenger information
// wg.Add(1)
// go func() {
// defer wg.Done()
wg.Add(1)
go func() {
defer wg.Done()
// passenger, err := s.GetPassenger(booking.Passenger.ID)
// if err != nil {
// errCh <- fmt.Errorf("Postgresql Storage GetBooking Error getting passenger: %w", err)
// return
// }
passenger, err := s.GetPassenger(booking.Passenger.ID)
if err != nil {
errCh <- fmt.Errorf("Postgresql Storage GetBooking Error getting passenger: %w", err)
return
}
// mu.Lock()
// booking.Passenger = passenger.Passenger
// mu.Unlock()
// }()
mu.Lock()
booking.Passenger = passenger.Passenger
mu.Unlock()
}()
// Concurrently fetch driver information
wg.Add(1)
@@ -754,7 +754,64 @@ func (s PostgresqlStorage) populateBookingDetails(booking internal.Booking, depa
return booking, nil
}
func (s PostgresqlStorage) GetAllDrivers(date int64) (drivers []internal.Driver, err error) {
func (s PostgresqlStorage) GetAllDrivers( ) (drivers []internal.Driver, err error) {
rows, err := s.DbConnection.Query(fmt.Sprintf("SELECT driver_id, driver_departure_route, driver_radius, last_name, first_name, grade, alias, picture, verified_identity, preferences, availabilities_type, availabilities, operator, car FROM %s", s.Tables["drivers"]))
fmt.Println("test; ; ; ; ", rows)
if err != nil {
return nil, err
}
defer rows.Close()
for rows.Next() {
var driver internal.Driver
var departureRoute []byte
var preferencesJSON []byte
var availabilitiesJSON []byte
var carJSON []byte
if err := rows.Scan(
&driver.Driver.ID,
&departureRoute,
&driver.Radius,
&driver.Driver.LastName,
&driver.Driver.FirstName,
&driver.Driver.Grade,
&driver.Driver.Alias,
&driver.Driver.Picture,
&driver.Driver.VerifiedIdentity,
&preferencesJSON,
&driver.AvailabilitiesType,
&availabilitiesJSON,
&driver.Driver.Operator,
&carJSON,
); err != nil {
return nil, err
}
if err := json.Unmarshal(departureRoute, &driver.Driver_departure_address); err != nil {
return nil, err
}
if err := json.Unmarshal(preferencesJSON, &driver.Preferences); err != nil {
return nil, err
}
if err := json.Unmarshal(carJSON, &driver.Car); err != nil {
return nil, err
}
drivers = append(drivers, driver)
}
if err := rows.Err(); err != nil {
return nil, err
}
return drivers, nil
}
func (s PostgresqlStorage) GetAllDriversByDate(date int64) (drivers []internal.Driver, err error) {
rows, err := s.DbConnection.Query(fmt.Sprintf("SELECT driver_id, driver_departure_route, driver_radius, last_name, first_name, grade, alias, picture, verified_identity, preferences, availabilities_type, availabilities, operator, car FROM %s", s.Tables["drivers"]))
if err != nil {
return nil, err
@@ -880,7 +937,7 @@ func (s PostgresqlStorage) GetAllDrivers(date int64) (drivers []internal.Driver,
}
func (s PostgresqlStorage) DriverJourneys(departure_route *geojson.Feature, departure_date int64) (drivers []internal.Driver, err error) {
allDrivers, err := s.GetAllDrivers(departure_date)
allDrivers, err := s.GetAllDriversByDate(departure_date)
if err != nil {
return nil, err
}

View File

@@ -18,8 +18,9 @@ type Storage interface {
UpdateBookingStatus(id string, status internal.BookingStatus) (err error)
FilterUserBookingsByStatus(user_type string, status internal.BookingStatus, user_id string) (bookings []internal.Booking, err error)
DriverJourneys(departure_route *geojson.Feature, departure_date int64) (drivers []internal.Driver, err error)
GetAllDrivers(date int64) (drivers []internal.Driver, err error)
}
GetAllDriversByDate(date int64) (drivers []internal.Driver, err error)
GetAllDrivers() (drivers []internal.Driver, err error)
}
func NewStorage(cfg *viper.Viper) (Storage, error) {
var (