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 } // AllReservations returns a slice of all reservations func (m *testDBRepo) AllReservations() ([]models.Reservation, error) { var reservations []models.Reservation return reservations, nil } // AllNewReservations returns a slice of all new reservations func (m *testDBRepo) AllNewReservations() ([]models.Reservation, error) { var reservations []models.Reservation return reservations, nil } // GetReservationByID returns one reservation by ID func (m *testDBRepo) GetReservationByID(id int) (models.Reservation, error) { var res models.Reservation return res, nil } // UpdateReservation updates a user in the database func (m *testDBRepo) UpdateReservation(r models.Reservation) error { return nil } func (m *testDBRepo) DeleteReservation(id int) error { return nil } // UpdateProcessedForReservation set processed for a reservation func (m *testDBRepo) UpdateProcessedForReservation(id, processed int) error { return nil } func (m *testDBRepo) AllRooms() ([]models.Room, error) { var rooms []models.Room return rooms, nil } // GetRestrictionsForRoomByDate returns restrictions for a room by date range func (m *testDBRepo) GetRestrictionsForRoomByDate(roomId int, start, end time.Time) ([]models.RoomRestriction, error) { var restrictions []models.RoomRestriction return restrictions, nil }