imc-vibe/backend/internal/api/handlers/stats.go
Christoph Haas c4e3a31b69 Complete GORM to sqlc migration
- 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
2026-03-29 13:56:14 +02:00

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)
}