package repositories import ( "database/sql" "errors" "fmt" "log" "officeHours/models" ) type RoomRepo struct { db *sql.DB } func NewRoomRepo(db *sql.DB) *RoomRepo { return &RoomRepo{ db: db, } } func (r *RoomRepo) FindByName(name string) (models.Room, error) { row := r.db.QueryRow("SELECT * FROM room WHERE name=?", name) var room models.Room if err := row.Scan(&room.Name, &room.MaxOccupy); err != nil { return models.Room{}, err } return room, nil } func (r *RoomRepo) FindById(id int) (models.Room, error) { row := r.db.QueryRow("SELECT * FROM room WHERE id=?", id) var room models.Room if err := row.Scan(&room.Id, &room.Name, &room.MaxOccupy); err != nil { err = fmt.Errorf("error scanning row to get room: %w", err) if !errors.Is(err, sql.ErrNoRows) { log.Println(err.Error()) } return models.Room{}, err } return room, nil } func (r *RoomRepo) GetAll() ([]models.Room, error) { rows, err := r.db.Query("SELECT * FROM room ORDER BY name ASC") if err != nil { err = fmt.Errorf("error getting all rooms: %w", err) log.Println(err.Error()) return nil, err } defer rows.Close() var rooms []models.Room for rows.Next() { var room models.Room if err := rows.Scan(&room.Id, &room.Name, &room.MaxOccupy); err != nil { err = fmt.Errorf("error scanning row to get room: %w", err) return rooms, err } rooms = append(rooms, room) } return rooms, nil }