package storage import ( "context" "database/sql" "time" "synlotto-website/internal/logging" ) const insertRegistrationSQL = ` INSERT INTO audit_registration (user_id, username, email, ip, user_agent, timestamp) VALUES (?, ?, ?, ?, ?, ?) ` // Todo has to add in - db *sql.DB to make this work should this not be an import as all functions use it, more importantly no functions in storage just sql? // Handler Call - auditlogStorage.LogLoginAttempt(db, r.RemoteAddr, r.UserAgent(), username, ok) func LogLoginAttempt(db *sql.DB, rIP, rUA, username string, success bool) { _, err := db.Exec( `INSERT INTO audit_login (username, success, ip, user_agent, timestamp) VALUES ($1, $2, $3, $4, $5)`, username, success, rIP, rUA, time.Now().UTC(), ) if err != nil { logging.Info("❌ Failed to log login:", err) } } func LogSignup(db *sql.DB, userID int64, username, email, ip, userAgent string) { ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second) defer cancel() _, err := db.ExecContext(ctx, insertRegistrationSQL, userID, username, email, ip, userAgent, time.Now().UTC(), ) if err != nil { logging.Info("❌ Failed to log registration: %v", err) } }