init commit

This commit is contained in:
2024-09-05 16:09:33 +02:00
commit d8cf7a2c69
9 changed files with 334 additions and 0 deletions

62
Backend/models/booking.go Normal file
View File

@@ -0,0 +1,62 @@
package models
import (
"database/sql"
"fmt"
"log"
)
type Booking struct {
CradID string `json:"cradID"`
ReaderID string `json:"readerID"`
BookingType int `json:"bookingTyp"`
}
type SameBookingError struct{}
func (e SameBookingError) Error() string {
return "the same booking already exists!"
}
func VerifyBooking(b Booking) bool {
if b.CradID == "" || b.ReaderID == "" || b.BookingType == 0 {
return false
}
return true
}
func InsertBooking(b Booking, db *sql.DB) error {
if !checkLastBooking(b, db) {
return fmt.Errorf("the same booking already exists")
}
stmt, err := db.Prepare((`INSERT INTO zeiten (card_id, reader_id, booking_type) VALUES ($1, $2, $3)`))
if err != nil {
return err
}
_, err = stmt.Query(b.CradID, b.ReaderID, b.BookingType)
if err != nil {
return err
}
return nil
}
func checkLastBooking(b Booking, db *sql.DB) bool {
var booking_type int
stmt, err := db.Prepare((`SELECT booking_type FROM "zeiten" WHERE "card_id" = $1 ORDER BY "logged_time" DESC LIMIT 1;`))
if err != nil {
log.Fatalf("Error preparing query: %v", err)
return false
}
err = stmt.QueryRow(b.CradID).Scan(&booking_type)
if err == sql.ErrNoRows {
return true
}
if err!= nil {
log.Println("Error checking last booking: ", err)
return false
}
if booking_type == b.BookingType {
return false
}
return true
}