29 lines
862 B
Go
29 lines
862 B
Go
|
|
package handler
|
||
|
|
|
||
|
|
import (
|
||
|
|
"net/http"
|
||
|
|
|
||
|
|
"code.cubecraftcreations.com/CubeCraft-Creations/Control-Center/go-backend/internal/models"
|
||
|
|
)
|
||
|
|
|
||
|
|
// ─── Project Handlers ──────────────────────────────────────────────────────────
|
||
|
|
|
||
|
|
// ListProjects handles GET /api/projects.
|
||
|
|
func (h *Handler) ListProjects(w http.ResponseWriter, r *http.Request) {
|
||
|
|
projects := h.ProjectStore.List()
|
||
|
|
if projects == nil {
|
||
|
|
projects = []models.Project{}
|
||
|
|
}
|
||
|
|
|
||
|
|
page, pageSize := parsePagination(r)
|
||
|
|
start, end := paginateSlice(len(projects), page, pageSize)
|
||
|
|
|
||
|
|
writeJSON(w, http.StatusOK, models.PaginatedResponse{
|
||
|
|
Data: projects[start:end],
|
||
|
|
TotalCount: h.ProjectStore.Count(),
|
||
|
|
Page: page,
|
||
|
|
PageSize: pageSize,
|
||
|
|
HasMore: end < len(projects),
|
||
|
|
})
|
||
|
|
}
|