35 lines
1.2 KiB
Go
35 lines
1.2 KiB
Go
package storage
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/paulmach/orb/geojson"
|
|
"github.com/spf13/viper"
|
|
"solidarity-service/internal"
|
|
)
|
|
|
|
type Storage interface {
|
|
CreatePassenger(passenger internal.Passenger) (err error)
|
|
GetPassenger(passengerID string) (passenger internal.Passenger, err error)
|
|
CreateDriver(driver internal.Driver) (err error)
|
|
GetDriver(driverID string) (driver internal.Driver, err error)
|
|
GetBooking(id string) (booking internal.Booking, err error)
|
|
CreateBooking(booking internal.BookingRequest) (err error)
|
|
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)
|
|
}
|
|
|
|
func NewStorage(cfg *viper.Viper) (Storage, error) {
|
|
var (
|
|
storage_type = cfg.GetString("storage.db.type")
|
|
)
|
|
switch storage_type {
|
|
case "psql":
|
|
s, err := NewPostgresqlStorage(cfg)
|
|
return s, err
|
|
default:
|
|
return nil, fmt.Errorf("storage type %v is not supported", storage_type)
|
|
}
|
|
}
|