Use prepared statement

This commit is contained in:
2024-12-30 23:47:40 +01:00
parent 4ce099621d
commit e5e85d494e
2 changed files with 15 additions and 5 deletions

View File

@ -8,6 +8,7 @@ import (
"context" "context"
"database/sql" "database/sql"
_ "github.com/mattn/go-sqlite3" _ "github.com/mattn/go-sqlite3"
"log"
"log/slog" "log/slog"
"net/http" "net/http"
"os" "os"
@ -69,6 +70,11 @@ func openDb() (*sql.DB, error) {
if err == nil { if err == nil {
err = db.Ping() err = db.Ping()
} }
_, err = db.Exec("PRAGMA foreign_keys = ON")
if err != nil {
log.Fatalf("Failed to enable foreign key constraints: %v", err)
}
return db, err return db, err
} }

View File

@ -20,10 +20,14 @@ func (e *ElectionModel) Insert(name string, tokens int, areVotersKnown bool, max
} }
defer tx.Rollback() defer tx.Rollback()
result, err := tx.Exec(` stmt, err := tx.Prepare(`
INSERT INTO elections (name, tokens, are_voters_known, max_voters, expires_at) INSERT INTO elections (name, tokens, are_voters_known, max_voters, expires_at)
VALUES (?, ?, ?, ?, ?)`, VALUES (?, ?, ?, ?, ?)`)
name, tokens, areVotersKnown, maxVoters, expiresAt) if err != nil {
return 0, err
}
result, err := stmt.Exec(name, tokens, areVotersKnown, maxVoters, expiresAt)
if err != nil { if err != nil {
return 0, err return 0, err
} }
@ -33,7 +37,7 @@ func (e *ElectionModel) Insert(name string, tokens int, areVotersKnown bool, max
return 0, err return 0, err
} }
stmt, err := tx.Prepare(` stmt, err = tx.Prepare(`
INSERT INTO choices (text, election_id) INSERT INTO choices (text, election_id)
VALUES (?, ?)`) VALUES (?, ?)`)
if err != nil { if err != nil {