Reservation Calendar 3

This commit is contained in:
2024-07-27 22:39:23 +02:00
parent b97c6cba5c
commit 7894a05daf
6 changed files with 85 additions and 1 deletions

View File

@ -387,6 +387,7 @@ func (m *postgresDBRepo) UpdateProcessedForReservation(id, processed int) error
return nil
}
// AllRooms gets all rooms
func (m *postgresDBRepo) AllRooms() ([]models.Room, error) {
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
@ -419,3 +420,42 @@ func (m *postgresDBRepo) AllRooms() ([]models.Room, error) {
}
return rooms, nil
}
// GetRestrictionsForRoomByDate returns restrictions for a room by date range
func (m *postgresDBRepo) GetRestrictionsForRoomByDate(roomId int, start, end time.Time) ([]models.RoomRestriction, error) {
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
var restrictions []models.RoomRestriction
// coalesce use 0 if null
query := `select id, coalesce(reservation_id, 0), restriction_id, room_id, start_date, end_date
from room_restrictions where $1 < end_date and $2 >= start_date
and room_id = $3`
rows, err := m.DB.QueryContext(ctx, query, start, end, roomId)
if err != nil {
return restrictions, err
}
defer rows.Close() // To avoid memory leak
for rows.Next() {
var r models.RoomRestriction
err := rows.Scan(
&r.ID,
&r.ReservationID,
&r.RestrictionID,
&r.RoomID,
&r.StartDate,
&r.EndDate,
)
if err != nil {
return restrictions, err
}
restrictions = append(restrictions, r)
}
if err = rows.Err(); err != nil {
return restrictions, err
}
return restrictions, nil
}

View File

@ -122,3 +122,9 @@ func (m *testDBRepo) AllRooms() ([]models.Room, error) {
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
}