- Remove GORM dependency, use sqlc for type-safe SQL queries - Update all handlers to use sqlc patterns (context, value types) - Fix N+1 query problem in domain listing with JOIN query - Enable SQL query logging in debug mode (USE_EMBEDDED=false) - Add comprehensive comments for non-Go developers
49 lines
877 B
Go
49 lines
877 B
Go
package handlers
|
|
|
|
import (
|
|
"git.workaround.org/chaas/imc/backend/internal/db"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type StatsHandler struct {
|
|
db *db.DB
|
|
}
|
|
|
|
func NewStatsHandler(database *db.DB) *StatsHandler {
|
|
return &StatsHandler{db: database}
|
|
}
|
|
|
|
type Stats struct {
|
|
TotalDomains int `json:"totalDomains"`
|
|
TotalUsers int `json:"totalUsers"`
|
|
TotalAliases int `json:"totalAliases"`
|
|
QueueSize int `json:"queueSize"`
|
|
}
|
|
|
|
func (h *StatsHandler) Get(c *gin.Context) {
|
|
ctx := c.Request.Context()
|
|
|
|
domains, err := h.db.GetAllDomains(ctx)
|
|
if err != nil {
|
|
domains = nil
|
|
}
|
|
|
|
users, err := h.db.GetAllMailUsers(ctx)
|
|
if err != nil {
|
|
users = nil
|
|
}
|
|
|
|
aliases, err := h.db.GetAllAliases(ctx)
|
|
if err != nil {
|
|
aliases = nil
|
|
}
|
|
|
|
stats := Stats{
|
|
TotalDomains: len(domains),
|
|
TotalUsers: len(users),
|
|
TotalAliases: len(aliases),
|
|
QueueSize: 0,
|
|
}
|
|
|
|
Success(c, stats)
|
|
}
|