|
|
|
@@ -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) |
|
|
|
|