Small improvements

This commit is contained in:
2022-09-05 07:26:43 +02:00
parent b9b0c10e1c
commit be9ee8372f
7 changed files with 598 additions and 112 deletions

View File

@@ -2,6 +2,7 @@ package storage
import (
"context"
"fmt"
"github.com/spf13/viper"
"go.mongodb.org/mongo-driver/bson"
@@ -112,6 +113,16 @@ func (s MongoDBStorage) CreateBooking(booking Booking) error {
return nil
}
func (s MongoDBStorage) UpdateBooking(booking Booking) error {
collection := s.Client.Database(s.DbName).Collection(s.Collections["bookings"])
if _, err := collection.ReplaceOne(context.TODO(), bson.M{"_id": booking.ID}, booking); err != nil {
fmt.Println(err)
return err
}
return nil
}
func (s MongoDBStorage) GetBooking(id string) (*Booking, error) {
collection := s.Client.Database(s.DbName).Collection(s.Collections["bookings"])
@@ -124,6 +135,35 @@ func (s MongoDBStorage) GetBooking(id string) (*Booking, error) {
return booking, nil
}
func (s MongoDBStorage) GetBookings() (bookings []Booking, err error) {
collection := s.Client.Database(s.DbName).Collection(s.Collections["bookings"])
var cur *mongo.Cursor
findOptions := options.Find()
cur, err = collection.Find(context.TODO(), bson.D{}, findOptions)
if err != nil {
return bookings, err
}
for cur.Next(context.TODO()) {
var booking Booking
var elem bson.M
if err := cur.Decode(&elem); err != nil {
return bookings, err
}
bsonBytes, _ := bson.Marshal(elem)
bson.Unmarshal(bsonBytes, &booking)
bookings = append(bookings, booking)
}
return
}
func (s MongoDBStorage) GetBookingsForVehicle(vehicleid string) (bookings []Booking, err error) {
collection := s.Client.Database(s.DbName).Collection(s.Collections["bookings"])
@@ -153,6 +193,35 @@ func (s MongoDBStorage) GetBookingsForVehicle(vehicleid string) (bookings []Book
return
}
func (s MongoDBStorage) GetBookingsForDriver(driver string) (bookings []Booking, err error) {
collection := s.Client.Database(s.DbName).Collection(s.Collections["bookings"])
var cur *mongo.Cursor
findOptions := options.Find()
cur, err = collection.Find(context.TODO(), bson.M{"driver": driver}, findOptions)
if err != nil {
return bookings, err
}
for cur.Next(context.TODO()) {
var booking Booking
var elem bson.M
if err := cur.Decode(&elem); err != nil {
return bookings, err
}
bsonBytes, _ := bson.Marshal(elem)
bson.Unmarshal(bsonBytes, &booking)
bookings = append(bookings, booking)
}
return
}
func (s MongoDBStorage) DeleteBooking(bookingid string) error {
collection := s.Client.Database(s.DbName).Collection(s.Collections["bookings"])

View File

@@ -14,8 +14,11 @@ type Storage interface {
//Bookings management
CreateBooking(Booking) error
UpdateBooking(Booking) error
GetBooking(id string) (*Booking, error)
GetBookings() ([]Booking, error)
GetBookingsForVehicle(vehicleid string) ([]Booking, error)
GetBookingsForDriver(driver string) ([]Booking, error)
DeleteBooking(id string) error
}