fixed db issues

This commit is contained in:
2026-02-05 20:07:37 +11:00
parent 4c31c24069
commit 697bef80e9
9 changed files with 140 additions and 61 deletions

View File

@@ -3,7 +3,6 @@ package db
import (
"context"
"database/sql"
"fmt"
"time"
"git.haelnorr.com/h/golib/hwsauth"
@@ -50,6 +49,7 @@ func CreateUser(ctx context.Context, tx bun.Tx, username string, discorduser *di
_, err := tx.NewInsert().
Model(user).
Returning("id").
Exec(ctx)
if err != nil {
return nil, errors.Wrap(err, "tx.NewInsert")
@@ -61,7 +61,6 @@ func CreateUser(ctx context.Context, tx bun.Tx, username string, discorduser *di
// GetUserByID queries the database for a user matching the given ID
// Returns nil, nil if no user is found
func GetUserByID(ctx context.Context, tx bun.Tx, id int) (*User, error) {
fmt.Printf("user id requested: %v", id)
user := new(User)
err := tx.NewSelect().
Model(user).
@@ -69,7 +68,7 @@ func GetUserByID(ctx context.Context, tx bun.Tx, id int) (*User, error) {
Limit(1).
Scan(ctx)
if err != nil {
if err.Error() == "sql: no rows in result set" {
if err == sql.ErrNoRows {
return nil, nil
}
return nil, errors.Wrap(err, "tx.NewSelect")
@@ -87,10 +86,10 @@ func GetUserByUsername(ctx context.Context, tx bun.Tx, username string) (*User,
Limit(1).
Scan(ctx)
if err != nil {
if err.Error() == "sql: no rows in result set" {
if err == sql.ErrNoRows {
return nil, nil
}
return nil, errors.Wrap(err, "tx.Select")
return nil, errors.Wrap(err, "tx.NewSelect")
}
return user, nil
}
@@ -105,7 +104,7 @@ func GetUserByDiscordID(ctx context.Context, tx bun.Tx, discordID string) (*User
Limit(1).
Scan(ctx)
if err != nil {
if err.Error() == "sql: no rows in result set" {
if err == sql.ErrNoRows {
return nil, nil
}
return nil, errors.Wrap(err, "tx.NewSelect")
@@ -201,22 +200,17 @@ func (u *User) IsAdmin(ctx context.Context, tx bun.Tx) (bool, error) {
}
func GetUsers(ctx context.Context, tx bun.Tx, pageOpts *PageOpts) (*Users, error) {
pageOpts = setDefaultPageOpts(pageOpts, 1, 50, bun.OrderAsc, "id")
users := new([]*User)
err := tx.NewSelect().
Model(users).
OrderBy(pageOpts.OrderBy, pageOpts.Order).
Limit(pageOpts.PerPage).
Offset(pageOpts.PerPage * (pageOpts.Page - 1)).
Scan(ctx)
if err != nil && err != sql.ErrNoRows {
return nil, errors.Wrap(err, "tx.NewSelect")
}
total, err := tx.NewSelect().
Model(users).
Count(ctx)
query := tx.NewSelect().
Model(users)
total, err := query.Count(ctx)
if err != nil {
return nil, errors.Wrap(err, "tx.NewSelect")
return nil, errors.Wrap(err, "query.Count")
}
query, pageOpts = setPageOpts(query, pageOpts, 1, 50, bun.OrderAsc, "id")
err = query.Scan(ctx)
if err != nil && err != sql.ErrNoRows {
return nil, errors.Wrap(err, "query.Scan")
}
list := &Users{
Users: *users,