45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"arbeitszeitmessung/models"
|
|
"database/sql"
|
|
"fmt"
|
|
)
|
|
|
|
func OpenDatabase() (*sql.DB, error) {
|
|
dbHost := getEnv("POSTGRES_HOST", "localhost")
|
|
dbName := getEnv("POSTGRES_DB", "arbeitszeitmessung")
|
|
dbUser := getEnv("POSTGRES_USER", "arbeit_zeit")
|
|
dbPassword := getEnv("POSTGRES_PASS", "password")
|
|
|
|
connStr := fmt.Sprintf("postgres://%s:%s@%s:5432/%s?sslmode=disable", dbUser, dbPassword, dbHost, dbName)
|
|
return sql.Open("postgres", connStr)
|
|
}
|
|
|
|
func GetBookingsByCardID(db *sql.DB, card_id string) ([]models.Booking, error) {
|
|
qStr, err := db.Prepare((`SELECT * FROM zeiten WHERE card_id = $1`))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var bookings []models.Booking
|
|
rows, err := qStr.Query(card_id)
|
|
if err == sql.ErrNoRows {
|
|
return bookings, err
|
|
}
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
for rows.Next() {
|
|
var booking models.Booking
|
|
if err := rows.Scan(&booking.Id, &booking.LoggedTime, &booking.CardID, &booking.ReaderID, &booking.BookingType); err != nil {
|
|
return bookings, err
|
|
}
|
|
bookings = append(bookings, booking)
|
|
}
|
|
if err = rows.Err(); err != nil {
|
|
return bookings, err
|
|
}
|
|
return bookings, nil
|
|
}
|