feat: Filters for datasets enpoint
This commit is contained in:
@@ -219,6 +219,35 @@ func (h *DatasetHandler) list(w http.ResponseWriter, r *http.Request) {
|
||||
if v := strings.TrimSpace(r.URL.Query().Get("category_code")); v != "" {
|
||||
categoryCode = &v
|
||||
}
|
||||
|
||||
filter := domain.DatasetFilter{CategoryID: categoryID}
|
||||
|
||||
if v := strings.TrimSpace(r.URL.Query().Get("file_type")); v != "" {
|
||||
ft := domain.FileType(v)
|
||||
if !ft.Valid() {
|
||||
httputil.WriteError(w, http.StatusBadRequest, "file_type must be one of: vector_with_kato, vector, raster")
|
||||
return
|
||||
}
|
||||
filter.FileType = &ft
|
||||
}
|
||||
|
||||
if v := strings.TrimSpace(r.URL.Query().Get("automated")); v != "" {
|
||||
b, err := strconv.ParseBool(v)
|
||||
if err != nil {
|
||||
httputil.WriteError(w, http.StatusBadRequest, "automated must be a boolean")
|
||||
return
|
||||
}
|
||||
filter.Automated = &b
|
||||
}
|
||||
|
||||
if v := strings.TrimSpace(r.URL.Query().Get("status")); v != "" {
|
||||
if !domain.ValidDatasetStatus(v) {
|
||||
httputil.WriteError(w, http.StatusBadRequest, "invalid status")
|
||||
return
|
||||
}
|
||||
filter.Status = &v
|
||||
}
|
||||
|
||||
page, ok := parsePositiveIntQuery(w, r, "page", 1)
|
||||
if !ok {
|
||||
return
|
||||
@@ -228,7 +257,7 @@ func (h *DatasetHandler) list(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
res, err := h.svc.ListSummaries(r.Context(), categoryID, categoryCode, page, pageSize)
|
||||
res, err := h.svc.ListSummaries(r.Context(), filter, categoryCode, page, pageSize)
|
||||
if err != nil {
|
||||
respondDomainError(w, err)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user