Rework db package to make it testable

This commit is contained in:
2024-11-21 22:36:12 +01:00
parent 2faefb6db5
commit 807e96a76c
16 changed files with 274 additions and 161 deletions

View File

@@ -16,10 +16,10 @@ type LoginRequest struct {
}
type LoginResponse struct {
AccessToken string `json:"accessToken"`
RefreshToken string `json:"refreshToken"`
User *models.User `json:"user"`
Session *auth.Session `json:"session"`
AccessToken string `json:"accessToken"`
RefreshToken string `json:"refreshToken"`
User *models.User `json:"user"`
Session *models.Session `json:"session"`
}
type RefreshRequest struct {

View File

@@ -9,12 +9,12 @@ import (
// Handler provides common functionality for all handlers
type Handler struct {
DB *db.DB
DB db.Database
Storage storage.Manager
}
// NewHandler creates a new handler with the given dependencies
func NewHandler(db *db.DB, s storage.Manager) *Handler {
func NewHandler(db db.Database, s storage.Manager) *Handler {
return &Handler{
DB: db,
Storage: s,

View File

@@ -171,8 +171,7 @@ func (h *Handler) DeleteAccount() http.HandlerFunc {
// Prevent admin from deleting their own account if they're the last admin
if user.Role == "admin" {
// Count number of admin users
adminCount := 0
err := h.DB.QueryRow("SELECT COUNT(*) FROM users WHERE role = 'admin'").Scan(&adminCount)
adminCount, err := h.DB.CountAdminUsers()
if err != nil {
http.Error(w, "Failed to verify admin status", http.StatusInternalServerError)
return