mi/frontend/src/Mi/Switch.elm

56 lines
1.1 KiB
Elm

module Mi.Switch exposing (Switch, decoder, frontURL, idURL, listURL, switchURL)
import Iso8601
import Json.Decode exposing (Decoder, field, int, map5, nullable, string)
import Time exposing (Posix)
import Url.Builder as UB
type alias Switch =
{ id : String
, who : String
, started_at : Posix
, ended_at : Maybe Posix
, duration : Maybe Int
}
decoder : Decoder Switch
decoder =
map5 Switch
(field "id" string)
(field "who" string)
(field "started_at" Iso8601.decoder)
(field "ended_at" (nullable Iso8601.decoder))
(field "duration" (nullable int))
switchURL : String
switchURL =
UB.absolute
[ "api", "switches", "switch" ]
[]
idURL : String -> String
idURL id =
UB.absolute
[ "api", "switches", "id", id ]
[]
frontURL : String
frontURL =
UB.absolute
[ "api", "switches", "current" ]
[]
listURL : Int -> Int -> String
listURL limit page =
UB.absolute
[ "api", "switches", "" ]
[ UB.int "limit" limit
, UB.int "page" page
]