- Added gin-gonic v1.10.0 dependency - Refactored router.go: clean route groups with middleware chains - Refactored all handlers to use gin.Context instead of http.ResponseWriter/*http.Request - Simplified response helpers (JSON, Error, Success, Created, NoContent) - Clean auth middleware using Gin's c.Set() for context - Cleaner route definitions with path parameters (e.g., /domains/:name/users/:id) - Admin routes moved to /api/admin group with RequireAdmin middleware
47 lines
872 B
Go
47 lines
872 B
Go
package handlers
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/imc-vibe/backend/internal/db"
|
|
)
|
|
|
|
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) {
|
|
domains, err := h.db.GetAllDomains()
|
|
if err != nil {
|
|
domains = []db.DomainStats{}
|
|
}
|
|
|
|
users, err := h.db.GetAllMailUsers()
|
|
if err != nil {
|
|
users = []db.User{}
|
|
}
|
|
|
|
aliases, err := h.db.GetAllAliases()
|
|
if err != nil {
|
|
aliases = []db.AliasWithDomain{}
|
|
}
|
|
|
|
stats := Stats{
|
|
TotalDomains: len(domains),
|
|
TotalUsers: len(users),
|
|
TotalAliases: len(aliases),
|
|
QueueSize: 0,
|
|
}
|
|
|
|
Success(c, stats)
|
|
}
|