searching for availability for all rooms
This commit is contained in:
@ -65,8 +65,8 @@ func (m *postgresDBRepo) InsertRoomRestriction(r models.RoomRestriction) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// SearchAvailabilityByDates returns true if availability exists for roomID, and false if no availability
|
||||
func (m *postgresDBRepo) SearchAvailabilityByDates(start, end time.Time, roomID int) (bool, error) {
|
||||
// SearchAvailabilityByDatesByRoomID returns true if availability exists for roomID, and false if no availability
|
||||
func (m *postgresDBRepo) SearchAvailabilityByDatesByRoomID(start, end time.Time, roomID int) (bool, error) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
|
||||
defer cancel()
|
||||
|
||||
@ -87,3 +87,42 @@ func (m *postgresDBRepo) SearchAvailabilityByDates(start, end time.Time, roomID
|
||||
|
||||
return false, nil
|
||||
}
|
||||
|
||||
// SearchAvailabilityForAllRooms returns a slice of rooms, if any, for given date range
|
||||
func (m *postgresDBRepo) SearchAvailabilityForAllRooms(start, end time.Time) ([]models.Room, error) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
|
||||
defer cancel()
|
||||
|
||||
var rooms []models.Room
|
||||
stmt := `select
|
||||
r.id, r.room_name
|
||||
from
|
||||
rooms r
|
||||
where r.id not in
|
||||
(select
|
||||
roomId
|
||||
from
|
||||
room_restrictions rr
|
||||
where
|
||||
$1 < rr.end_date and $2> rr.start_date)`
|
||||
|
||||
rows, err := m.DB.QueryContext(ctx, stmt, start, end)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for rows.Next() {
|
||||
var room models.Room
|
||||
|
||||
err := rows.Scan(&room.ID, &room.RoomName)
|
||||
if err != nil {
|
||||
return rooms, err
|
||||
}
|
||||
rooms = append(rooms, room)
|
||||
}
|
||||
|
||||
if err = rows.Err(); err != nil {
|
||||
return rooms, err
|
||||
}
|
||||
|
||||
return rooms, nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user