map_experience_handler.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package handlers
  2. import (
  3. "net/http"
  4. "strconv"
  5. "cmr-backend/internal/httpx"
  6. "cmr-backend/internal/service"
  7. )
  8. type MapExperienceHandler struct {
  9. service *service.MapExperienceService
  10. }
  11. func NewMapExperienceHandler(service *service.MapExperienceService) *MapExperienceHandler {
  12. return &MapExperienceHandler{service: service}
  13. }
  14. func (h *MapExperienceHandler) ListMaps(w http.ResponseWriter, r *http.Request) {
  15. limit := 20
  16. if raw := r.URL.Query().Get("limit"); raw != "" {
  17. if parsed, err := strconv.Atoi(raw); err == nil {
  18. limit = parsed
  19. }
  20. }
  21. result, err := h.service.ListMaps(r.Context(), service.ListExperienceMapsInput{Limit: limit})
  22. if err != nil {
  23. httpx.WriteError(w, err)
  24. return
  25. }
  26. httpx.WriteJSON(w, http.StatusOK, map[string]any{"data": result})
  27. }
  28. func (h *MapExperienceHandler) GetMapDetail(w http.ResponseWriter, r *http.Request) {
  29. result, err := h.service.GetMapDetail(r.Context(), r.PathValue("mapAssetPublicID"))
  30. if err != nil {
  31. httpx.WriteError(w, err)
  32. return
  33. }
  34. httpx.WriteJSON(w, http.StatusOK, map[string]any{"data": result})
  35. }