Use prepared statement
This commit is contained in:
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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 {
|
||||||
|
Reference in New Issue
Block a user