solidarity-transport/storage/storage.go

41 lines
1.3 KiB
Go

package storage
import (
"fmt"
"git.coopgo.io/coopgo-platform/solidarity-transport/types"
"github.com/spf13/viper"
)
type Storage interface {
CreateDriverRegularAvailability(types.DriverRegularAvailability) error
CreateDriverRegularAvailabilities([]*types.DriverRegularAvailability) error
DeleteDriverRegularAvailability(driverid string, availabilityid string) error
GetDriverRegularAvailability(driverid string, availabilityid string) (*types.DriverRegularAvailability, error)
GetDriverRegularAvailabilities(driverid string) ([]*types.DriverRegularAvailability, error)
GetRegularAvailabilities(day int, timeInDay string) ([]*types.DriverRegularAvailability, error)
PushDriverJourneys([]*types.DriverJourney) error
GetDriverJourney(id string) (*types.DriverJourney, error)
CreateBooking(types.Booking) error
GetAllBookings() ([]*types.Booking, error)
GetBooking(id string) (*types.Booking, error)
UpdateBookingStatus(bookingid string, newStatus string) error
}
func NewStorage(cfg *viper.Viper) (Storage, error) {
storage_type := cfg.GetString("storage.db.type")
switch storage_type {
case "mongodb":
return NewMongoDBStorage(cfg)
case "memory":
return NewMemoryStorage(cfg)
default:
return nil, fmt.Errorf("storage type %v is not supported", storage_type)
}
}