Explorar el Código

feat: add query parameters to tracks API

master
Blaz Smehov hace 2 semanas
padre
commit
86db5963a5
Se han modificado 1 ficheros con 22 adiciones y 1 borrados
  1. +22
    -1
      internal/pkg/controller/tracks_controller.go

+ 22
- 1
internal/pkg/controller/tracks_controller.go Ver fichero

@@ -3,6 +3,8 @@ package controller
import (
"encoding/json"
"net/http"
"strconv"
"time"

"github.com/AFASystems/presence/internal/pkg/model"
"github.com/gorilla/mux"
@@ -13,7 +15,26 @@ func TracksListController(db *gorm.DB) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
id := mux.Vars(r)["id"]
var tracks []model.Tracks
db.Where("uuid = ?", id).Order("timestamp DESC").Limit(100).Find(&tracks)

query := r.URL.Query()
lStr := query.Get("limit")

parseTime := func(key string, defaultTime time.Time) time.Time {
t, err := time.Parse(time.RFC3339, query.Get(key))
if err != nil {
return defaultTime
}
return t
}

limit, _ := strconv.Atoi(lStr)
if limit == 0 {
limit = 10
}
from := parseTime("from", time.Now().AddDate(0, 0, -1))
to := parseTime("to", time.Now())

db.Where("uuid = ? AND timestamp BETWEEN ? AND ?", id, from, to).Order("timestamp DESC").Limit(limit).Find(&tracks)
res, err := json.Marshal(tracks)
if err != nil {
http.Error(w, err.Error(), 400)


Cargando…
Cancelar
Guardar