Refactor and remove sqlite and replace with MySQL
This commit is contained in:
70
internal/storage/mysql/tickets/create.go
Normal file
70
internal/storage/mysql/tickets/create.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"log"
|
||||
"synlotto-website/internal/helpers"
|
||||
"synlotto-website/internal/models"
|
||||
)
|
||||
|
||||
// ToDo: Has both insert and select need to break into read and write.
|
||||
func InsertTicket(db *sql.DB, ticket models.Ticket) error {
|
||||
var bonus1Val interface{}
|
||||
var bonus2Val interface{}
|
||||
|
||||
if ticket.Bonus1 != nil {
|
||||
bonus1Val = helpers.Nullable(*ticket.Bonus1)
|
||||
} else {
|
||||
bonus1Val = nil
|
||||
}
|
||||
|
||||
if ticket.Bonus2 != nil {
|
||||
bonus2Val = helpers.Nullable(*ticket.Bonus2)
|
||||
} else {
|
||||
bonus2Val = nil
|
||||
}
|
||||
|
||||
query := `
|
||||
SELECT COUNT(*) FROM my_tickets
|
||||
WHERE game_type = ? AND draw_date = ?
|
||||
AND ball1 = ? AND ball2 = ? AND ball3 = ?
|
||||
AND ball4 = ? AND ball5 = ? AND bonus1 IS ? AND bonus2 IS ?;`
|
||||
|
||||
var count int
|
||||
err := db.QueryRow(query,
|
||||
ticket.GameType,
|
||||
ticket.DrawDate,
|
||||
ticket.Ball1,
|
||||
ticket.Ball2,
|
||||
ticket.Ball3,
|
||||
ticket.Ball4,
|
||||
ticket.Ball5,
|
||||
bonus1Val,
|
||||
bonus2Val,
|
||||
).Scan(&count)
|
||||
|
||||
isDuplicate := count > 0
|
||||
|
||||
insert := `
|
||||
INSERT INTO my_tickets (
|
||||
game_type, draw_date,
|
||||
ball1, ball2, ball3, ball4, ball5,
|
||||
bonus1, bonus2, duplicate
|
||||
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);`
|
||||
|
||||
_, err = db.Exec(insert,
|
||||
ticket.GameType, ticket.DrawDate,
|
||||
ticket.Ball1, ticket.Ball2, ticket.Ball3,
|
||||
ticket.Ball4, ticket.Ball5,
|
||||
bonus1Val, bonus2Val,
|
||||
isDuplicate,
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
log.Println("❌ Failed to insert ticket:", err)
|
||||
} else if isDuplicate {
|
||||
log.Println("⚠️ Duplicate ticket detected and flagged.")
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
Reference in New Issue
Block a user