CHANGE: updated to correct sql database

This commit is contained in:
2024-09-10 22:29:26 +02:00
parent 6cb8bd5afd
commit 0fac697cda
8 changed files with 82 additions and 278 deletions

View File

@@ -16,36 +16,37 @@ func (e SameBookingError) Error() string {
}
type Booking struct {
CardID string `json:"cardID"`
ReaderID string `json:"readerID"`
BookingType int `json:"bookingType"`
LoggedTime time.Time `json:"loggedTime"`
Id int `json:"id"`
CardUID string `json:"card_uid"`
GeraetID int16 `json:"geraet_id"`
CheckInOut int16 `json:"check_in_out"`
Timestamp time.Time `json:"timestamp"`
CounterId int `json:"counter_id"`
}
var DB *sql.DB
func (b Booking) New(card_id string, reader_id string, booking_type int) Booking {
func (b Booking) New(card_id string, geraet_id int16, check_in_out int16) Booking {
return Booking{
CardID: card_id,
ReaderID: reader_id,
BookingType: booking_type,
CardUID: card_id,
GeraetID: geraet_id,
CheckInOut: check_in_out,
}
}
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)
var booking Booking
if _check_in_out, err := strconv.Atoi(params.Get("check_in_out")); err == nil {
booking.CheckInOut = int16(_check_in_out)
}
cardID := params.Get("cardID")
readerID := params.Get("readerID")
return Booking{BookingType: bookingType, CardID: cardID, ReaderID: readerID}
if _geraet_id, err := strconv.Atoi(params.Get("geraet_id")); err == nil {
booking.GeraetID = int16(_geraet_id)
}
booking.CardUID = params.Get("card_uid")
return booking
}
func (b Booking) Verify() bool {
if b.CardID == "" || b.ReaderID == "" || b.BookingType == 0 {
if b.CardUID == "" || b.GeraetID == 0 || b.CheckInOut == 0 {
return false
}
return true
@@ -55,11 +56,11 @@ func (b *Booking) Insert() error {
if !checkLastBooking(*b) {
return SameBookingError{}
}
stmt, err := DB.Prepare((`INSERT INTO zeiten (card_id, reader_id, booking_type) VALUES ($1, $2, $3) RETURNING id, logged_time`))
stmt, err := DB.Prepare((`INSERT INTO anwesenheit (card_uid, geraet_id, check_in_out) VALUES ($1, $2, $3) RETURNING counter_id, timestamp`))
if err != nil {
return err
}
err = stmt.QueryRow(b.CardID, b.ReaderID, b.BookingType).Scan(&b.Id, &b.LoggedTime)
err = stmt.QueryRow(b.CardUID, b.GeraetID, b.CheckInOut).Scan(&b.CounterId, &b.Timestamp)
if err != nil {
return err
}
@@ -68,11 +69,11 @@ func (b *Booking) Insert() error {
func (b *Booking) GetBookingById(booking_id int) (Booking, error) {
var booking Booking
qStr, err := DB.Prepare((`SELECT id, logged_time, card_id, reader_id, booking_type FROM zeiten WHERE id = $1`))
qStr, err := DB.Prepare((`SELECT counter_id, timestamp, card_uid, geraet_id, check_in_out FROM anwesenheit WHERE counter_id = $1`))
if err != nil {
return booking, err
}
err = qStr.QueryRow(booking_id).Scan(&booking.Id, &booking.LoggedTime, &booking.CardID, &booking.ReaderID, &booking.BookingType)
err = qStr.QueryRow(booking_id).Scan(&booking.CounterId, &booking.Timestamp, &booking.CardUID, &booking.GeraetID, &booking.CheckInOut)
if err != nil {
return booking, err
}
@@ -84,7 +85,7 @@ func (b *Booking) GetBookingById(booking_id int) (Booking, error) {
}
func (b *Booking) GetBookingsByCardID(card_id string) ([]Booking, error) {
qStr, err := DB.Prepare((`SELECT id, logged_time, card_id, reader_id, booking_type FROM zeiten WHERE card_id = $1`))
qStr, err := DB.Prepare((`SELECT counter_id, timestamp, card_uid, geraet_id, check_in_out FROM anwesenheit WHERE card_uid = $1`))
if err != nil {
return nil, err
}
@@ -99,7 +100,7 @@ func (b *Booking) GetBookingsByCardID(card_id string) ([]Booking, error) {
defer rows.Close()
for rows.Next() {
var booking Booking
if err := rows.Scan(&booking.Id, &booking.LoggedTime, &booking.CardID, &booking.ReaderID, &booking.BookingType); err != nil {
if err := rows.Scan(&booking.CounterId, &booking.Timestamp, &booking.CardUID, &booking.GeraetID, &booking.CheckInOut); err != nil {
return bookings, err
}
bookings = append(bookings, booking)
@@ -111,12 +112,12 @@ func (b *Booking) GetBookingsByCardID(card_id string) ([]Booking, error) {
}
func (b Booking) Save() {
qStr, err := DB.Prepare((`UPDATE "zeiten" SET "id" = $1, "card_id" = $2, "reader_id" = $3, "booking_type" = $4 WHERE "id" = $1;`))
qStr, err := DB.Prepare((`UPDATE "anwesenheit" SET "id" = $1, "card_uid" = $2, "reader_id" = $3, "booking_type" = $4 WHERE "id" = $1;`))
if err != nil {
log.Fatalf("Error preparing query: %v", err)
return
}
_, err = qStr.Query(b.Id, b.CardID, b.ReaderID, b.BookingType)
_, err = qStr.Query(b.CounterId, b.CardUID, b.GeraetID, b.CheckInOut)
if err != nil {
log.Fatalf("Error executing query: %v", err)
return
@@ -124,25 +125,25 @@ func (b Booking) Save() {
}
func (b *Booking) Update(nb Booking) {
if b.BookingType != nb.BookingType && nb.BookingType != 0 {
b.BookingType = nb.BookingType
if b.CheckInOut != nb.CheckInOut && nb.CheckInOut != 0 {
b.CheckInOut = nb.CheckInOut
}
if b.CardID != nb.CardID && nb.CardID != "" {
b.CardID = nb.CardID
if b.CardUID != nb.CardUID && nb.CardUID != "" {
b.CardUID = nb.CardUID
}
if b.ReaderID != nb.ReaderID && nb.ReaderID != "" {
b.ReaderID = nb.ReaderID
if b.GeraetID != nb.GeraetID && nb.GeraetID != 0 {
b.GeraetID = nb.GeraetID
}
}
func checkLastBooking(b Booking) 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;`))
var check_in_out int
stmt, err := DB.Prepare((`SELECT check_in_out FROM "anwesenheit" WHERE "card_uid" = $1 ORDER BY "timestamp" DESC LIMIT 1;`))
if err != nil {
log.Fatalf("Error preparing query: %v", err)
return false
}
err = stmt.QueryRow(b.CardID).Scan(&booking_type)
err = stmt.QueryRow(b.CardUID).Scan(&check_in_out)
if err == sql.ErrNoRows {
return true
}
@@ -150,7 +151,7 @@ func checkLastBooking(b Booking) bool {
log.Println("Error checking last booking: ", err)
return false
}
if booking_type == b.BookingType {
if int16(check_in_out) == b.CheckInOut {
return false
}
return true