84 lines
2.1 KiB
Go
84 lines
2.1 KiB
Go
package dbrepo
|
|
|
|
import (
|
|
"errors"
|
|
"go-udemy-web-1/internal/models"
|
|
"time"
|
|
)
|
|
|
|
func (m *testDBRepo) AllUsers() bool {
|
|
return true
|
|
}
|
|
|
|
// InsertReservation inserts a reservation into the database
|
|
func (m *testDBRepo) InsertReservation(res models.Reservation) (int, error) {
|
|
// if the room id is 2, then fail; otherwise, pass
|
|
if res.RoomID == 2 {
|
|
return 0, errors.New("deliberate error")
|
|
}
|
|
return 1, nil
|
|
}
|
|
|
|
// InsertRoomRestriction inserts a room restriction into the database
|
|
func (m *testDBRepo) InsertRoomRestriction(r models.RoomRestriction) error {
|
|
if r.RoomID == 100 {
|
|
return errors.New("deliberate error")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// SearchAvailabilityByDatesByRoomID returns true if availability exists for roomID, and false if no availability
|
|
func (m *testDBRepo) SearchAvailabilityByDatesByRoomID(start, end time.Time, roomID int) (bool, error) {
|
|
if roomID == 2 {
|
|
return false, nil
|
|
}
|
|
if roomID == 100 {
|
|
return false, errors.New("deliberate error")
|
|
}
|
|
return true, nil
|
|
}
|
|
|
|
// SearchAvailabilityForAllRooms returns a slice of rooms, if any, for given date range
|
|
func (m *testDBRepo) SearchAvailabilityForAllRooms(start, end time.Time) ([]models.Room, error) {
|
|
var rooms []models.Room
|
|
if start.Format("2006-01-02") == "2050-01-01" && end.Format("2006-01-02") == "2050-01-02" {
|
|
room := models.Room{
|
|
RoomName: "room",
|
|
ID: 1,
|
|
}
|
|
rooms = append(rooms, room)
|
|
return rooms, nil
|
|
}
|
|
if start.Format("2006-01-02") == "2050-01-03" && end.Format("2006-01-02") == "2050-01-04" {
|
|
return rooms, errors.New("deliberate error")
|
|
}
|
|
return rooms, nil
|
|
}
|
|
|
|
// GetRoomById gets a room by id
|
|
func (m *testDBRepo) GetRoomById(id int) (models.Room, error) {
|
|
var room models.Room
|
|
|
|
if id > 2 || id <= 0 {
|
|
return room, errors.New("deliberate error")
|
|
}
|
|
return room, nil
|
|
}
|
|
|
|
// GetUserByID gets a user by id
|
|
func (m *testDBRepo) GetUserByID(id int) (models.User, error) {
|
|
var u models.User
|
|
|
|
return u, nil
|
|
}
|
|
|
|
// UpdateUser updates a user in the database
|
|
func (m *testDBRepo) UpdateUser(u models.User) error {
|
|
return nil
|
|
}
|
|
|
|
// Authenticate authenticates a user
|
|
func (m *testDBRepo) Authenticate(email, testPassword string) (int, string, error) {
|
|
return 1, "", nil
|
|
}
|