53 lines
985 B
Go
53 lines
985 B
Go
package handlers
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"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(w http.ResponseWriter, r *http.Request) {
|
|
if r.Method != http.MethodGet {
|
|
Error(w, http.StatusMethodNotAllowed, "method not allowed")
|
|
return
|
|
}
|
|
|
|
domains, err := h.db.GetAllDomains()
|
|
if err != nil {
|
|
domains = []db.DomainStats{}
|
|
}
|
|
|
|
users, err := h.db.GetAllUsers()
|
|
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(w, stats)
|
|
}
|