Ctrl K
ComunidadGuías…

internal/handler/consistency_handler.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package handler

import (
	"net/http"

	"github.com/johnzastrow/actalog/internal/service"
	"github.com/johnzastrow/actalog/pkg/logger"
	"github.com/johnzastrow/actalog/pkg/middleware"
)

// ConsistencyHandler handles consistency stats endpoints
type ConsistencyHandler struct {
	service *service.ConsistencyService
	logger  *logger.Logger
}

// NewConsistencyHandler creates a new consistency handler
func NewConsistencyHandler(service *service.ConsistencyService, logger *logger.Logger) *ConsistencyHandler {
	return &ConsistencyHandler{service: service, logger: logger}
}

// GetConsistencyStats returns the current user's consistency stats
func (h *ConsistencyHandler) GetConsistencyStats(w http.ResponseWriter, r *http.Request) {
	userID, ok := middleware.GetUserID(r.Context())
	if !ok {
		respondError(w, http.StatusUnauthorized, "Unauthorized")
		return
	}

	stats, err := h.service.GetUserStats(userID)
	if err != nil {
		h.logger.Error("Failed to get consistency stats: %v", err)
		respondError(w, http.StatusInternalServerError, "Failed to get consistency stats")
		return
	}

	respondJSON(w, http.StatusOK, stats)
}