-
Notifications
You must be signed in to change notification settings - Fork 0
/
handler_list_duelist.go
38 lines (33 loc) · 1.33 KB
/
handler_list_duelist.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package handlers
import (
"log/slog"
"net/http"
"github.com/JPauloMoura/Yu-Gi-Oh-Connect/internal/repository"
"github.com/JPauloMoura/Yu-Gi-Oh-Connect/pkg/response"
)
// @Summary ListDuelist
// @Description Realiza a listagem de duelista. Podemos obter a lista de duelistas utilizando paginação e ordenação dos resultados.
// @Tags Duelist
// @Accept json
// @Produce json
// @Param sort query string false "A ordem de classificação dos Duelistas (asc ou desc) "
// @Param field query string false "O campo pelo qual os Duelistas devem ser classificados (name, birthDate)"
// @Param limit query integer false "O número máximo de Duelistas a serem retornados. O padrão é 10."
// @Param page query integer false "O número da página de resultados"
// @Success 200 {object} []entities.Duelist
// @Router /duelist [GET]
func (h HandlerDuelist) ListDuelist(w http.ResponseWriter, r *http.Request) {
pagination, err := repository.NewPagination(r)
if err != nil {
slog.Error("failed to create pagination", slog.Any("error", err))
response.Encode(w, err, http.StatusBadRequest)
return
}
duelists, err := h.svcDuelist.ListDuelist(pagination)
if err != nil {
slog.Error("failed to list duelists", slog.Any("error", err))
response.Encode(w, err, http.StatusInternalServerError)
return
}
response.Encode(w, duelists, http.StatusOK)
}