summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2025-06-09 03:05:59 +0200
committerThomas Voss <mail@thomasvoss.com> 2025-06-09 03:05:59 +0200
commitdf7d90ed36da337ff271324476591910f3de9792 (patch)
treee6d5d3298e2bf2cb437c73f3497c892838016275
parent5aed031f11a2138365b80697addff6ea6c5e45ac (diff)
Make use of ‘scanToStruct()’HEADmaster
-rw-r--r--src/dbx/db.go4
-rw-r--r--src/dbx/users.go16
2 files changed, 13 insertions, 7 deletions
diff --git a/src/dbx/db.go b/src/dbx/db.go
index 30f14f7..b5a0cfe 100644
--- a/src/dbx/db.go
+++ b/src/dbx/db.go
@@ -160,6 +160,10 @@ func scanToStruct[T any](rs *sql.Rows) (T, error) {
rawValues[i] = &zero
}
+ rs.Next()
+ if err := rs.Err(); err != nil {
+ return zero, err
+ }
if err := rs.Scan(rawValues...); err != nil {
return zero, err
}
diff --git a/src/dbx/users.go b/src/dbx/users.go
index a0712ee..2eb3bbd 100644
--- a/src/dbx/users.go
+++ b/src/dbx/users.go
@@ -9,10 +9,10 @@ import (
)
type User struct {
- Email string
- Username string
- Password string
- AdminP bool
+ Email string `db:"email"`
+ Username string `db:"username"`
+ Password string `db:"password"`
+ AdminP bool `db:"adminp"`
}
var LoginFailed = errors.New("No user with the given username and password")
@@ -41,10 +41,12 @@ func Login(username, password string) (User, error) {
username = norm.NFC.String(username)
password = norm.NFC.String(password)
- u := User{}
/* TODO: Pass a context here? */
- err := DB.QueryRow(`SELECT * FROM users WHERE username = ?`, username).
- Scan(&u.Email, &u.Username, &u.Password, &u.AdminP)
+ rs, err := DB.Query(`SELECT * FROM users WHERE username = ?`, username)
+ if err != nil {
+ return User{}, err
+ }
+ u, err := scanToStruct[User](rs)
switch {
case errors.Is(err, sql.ErrNoRows):