switchcounter: fix pagination, get individual switches
This commit is contained in:
parent
bf2e5e9f85
commit
a97b14ff33
|
@ -1,6 +0,0 @@
|
||||||
module Session exposing (Session)
|
|
||||||
|
|
||||||
|
|
||||||
type Session
|
|
||||||
= Guest
|
|
||||||
| LoggedIn String
|
|
|
@ -15,6 +15,7 @@ func New(session *r.Session, mux *http.ServeMux) *Switches {
|
||||||
session: session,
|
session: session,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mux.HandleFunc("/switches/id/", result.GetID)
|
||||||
mux.HandleFunc("/switches/", result.GetSwitches)
|
mux.HandleFunc("/switches/", result.GetSwitches)
|
||||||
mux.HandleFunc("/switches/current", result.Current)
|
mux.HandleFunc("/switches/current", result.Current)
|
||||||
mux.HandleFunc("/switches/switch", result.RegisterSwitch)
|
mux.HandleFunc("/switches/switch", result.RegisterSwitch)
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"path"
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -13,12 +14,29 @@ import (
|
||||||
"within.website/ln"
|
"within.website/ln"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func (s *Switches) ByID(ctx context.Context, id string) (*Switch, error) {
|
||||||
|
var result Switch
|
||||||
|
res, err := r.Table("switches").
|
||||||
|
Get(id).
|
||||||
|
Run(s.session)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = res.One(&result)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &result, nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Switches) Get(ctx context.Context, limit, page int) ([]Switch, error) {
|
func (s *Switches) Get(ctx context.Context, limit, page int) ([]Switch, error) {
|
||||||
var result []Switch
|
var result []Switch
|
||||||
res, err := r.Table("switches").
|
res, err := r.Table("switches").
|
||||||
OrderBy(r.Desc("started_at")).
|
OrderBy(r.Desc("started_at")).
|
||||||
Limit(limit).
|
|
||||||
Skip(page * limit).
|
Skip(page * limit).
|
||||||
|
Limit(limit).
|
||||||
Run(s.session)
|
Run(s.session)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -84,6 +102,18 @@ func (s *Switches) Switch(ctx context.Context, who string) (Switch, Switch, erro
|
||||||
return lastSw, currentSw, nil
|
return lastSw, currentSw, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Switches) GetID(rw http.ResponseWriter, req *http.Request) {
|
||||||
|
id := path.Base(req.URL.Path)
|
||||||
|
sw, err := s.ByID(req.Context(), id)
|
||||||
|
if err != nil {
|
||||||
|
ln.Error(req.Context(), err)
|
||||||
|
http.Error(rw, "can't get data", http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
json.NewEncoder(rw).Encode(sw)
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Switches) Current(rw http.ResponseWriter, req *http.Request) {
|
func (s *Switches) Current(rw http.ResponseWriter, req *http.Request) {
|
||||||
var result Switch
|
var result Switch
|
||||||
res, err := r.Table("switches").
|
res, err := r.Table("switches").
|
||||||
|
@ -93,6 +123,7 @@ func (s *Switches) Current(rw http.ResponseWriter, req *http.Request) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ln.Error(req.Context(), err)
|
ln.Error(req.Context(), err)
|
||||||
http.Error(rw, "can't get data", http.StatusInternalServerError)
|
http.Error(rw, "can't get data", http.StatusInternalServerError)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = res.One(&result)
|
err = res.One(&result)
|
||||||
|
|
Loading…
Reference in New Issue