CHANGE: go debug working + seperated database and renam,ed module

This commit is contained in:
2024-09-05 17:05:51 +02:00
parent d8cf7a2c69
commit 19ccdadd32
9 changed files with 121 additions and 153 deletions

View File

@@ -2,38 +2,58 @@ package models
import (
"database/sql"
"fmt"
"log"
"net/url"
"strconv"
)
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 {
type Booking struct {
CardID string `json:"cradID"`
ReaderID string `json:"readerID"`
BookingType int `json:"bookingTyp"`
}
func (b Booking) New(card_id string, reader_id string, booking_type int) Booking {
return Booking{
CardID: card_id,
ReaderID: reader_id,
BookingType: booking_type,
}
}
func (b *Booking) FromUrlParams(params url.Values) Booking {
bookingType, err := strconv.Atoi(params.Get("bookingType"))
if err != nil {
log.Println("Error parsing bookingType: ", err)
return b.New("", "", 0)
}
cardID := params.Get("cardID")
readerID := params.Get("readerID")
return Booking{BookingType: bookingType, CardID: cardID, ReaderID: readerID}
}
func (b Booking) Verify() bool {
if b.CardID == "" || b.ReaderID == "" || b.BookingType == 0 {
return false
}
return true
}
func InsertBooking(b Booking, db *sql.DB) error {
func (b Booking) Insert(db *sql.DB) error {
if !checkLastBooking(b, db) {
return fmt.Errorf("the same booking already exists")
}
return SameBookingError{}
}
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)
_, err = stmt.Query(b.CardID, b.ReaderID, b.BookingType)
if err != nil {
return err
}
@@ -45,16 +65,16 @@ func checkLastBooking(b Booking, db *sql.DB) bool {
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)
return false
}
err = stmt.QueryRow(b.CardID).Scan(&booking_type)
if err == sql.ErrNoRows {
return true
}
if err!= nil {
log.Println("Error checking last booking: ", err)
return false
}
if err != nil {
log.Println("Error checking last booking: ", err)
return false
}
if booking_type == b.BookingType {
return false
}