2026-05-06 17:29:44 -04:00
|
|
|
package handler
|
|
|
|
|
|
|
|
|
|
import (
|
2026-05-08 19:58:06 -04:00
|
|
|
"log/slog"
|
2026-05-06 17:29:44 -04:00
|
|
|
"net/http"
|
|
|
|
|
|
|
|
|
|
"code.cubecraftcreations.com/CubeCraft-Creations/Control-Center/go-backend/internal/models"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// ─── Session Handlers ──────────────────────────────────────────────────────────
|
|
|
|
|
|
|
|
|
|
// ListSessions handles GET /api/sessions.
|
|
|
|
|
func (h *Handler) ListSessions(w http.ResponseWriter, r *http.Request) {
|
2026-05-08 19:58:06 -04:00
|
|
|
sessions, err := h.Sessions.ListActive(r.Context())
|
|
|
|
|
if err != nil {
|
|
|
|
|
slog.Error("list sessions failed", "error", err)
|
|
|
|
|
writeJSON(w, http.StatusInternalServerError, models.ErrorResponse{Error: "failed to list sessions"})
|
|
|
|
|
return
|
|
|
|
|
}
|
2026-05-06 17:29:44 -04:00
|
|
|
if sessions == nil {
|
|
|
|
|
sessions = []models.Session{}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
page, pageSize := parsePagination(r)
|
|
|
|
|
start, end := paginateSlice(len(sessions), page, pageSize)
|
|
|
|
|
|
2026-05-08 19:58:06 -04:00
|
|
|
totalCount, _ := h.Sessions.Count(r.Context())
|
2026-05-06 17:29:44 -04:00
|
|
|
writeJSON(w, http.StatusOK, models.PaginatedResponse{
|
|
|
|
|
Data: sessions[start:end],
|
2026-05-08 19:58:06 -04:00
|
|
|
TotalCount: totalCount,
|
2026-05-06 17:29:44 -04:00
|
|
|
Page: page,
|
|
|
|
|
PageSize: pageSize,
|
|
|
|
|
HasMore: end < len(sessions),
|
|
|
|
|
})
|
|
|
|
|
}
|