From 1e47a7754ca38bd1a6c74765d8378caf68ce4619 Mon Sep 17 00:00:00 2001 From: Joris Date: Sun, 26 Mar 2017 21:10:42 +0200 Subject: Separate client and server watch --- src/client/Model/User.elm | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/client/Model/User.elm (limited to 'src/client/Model/User.elm') diff --git a/src/client/Model/User.elm b/src/client/Model/User.elm new file mode 100644 index 0000000..f6e8147 --- /dev/null +++ b/src/client/Model/User.elm @@ -0,0 +1,44 @@ +module Model.User exposing + ( Users + , usersDecoder + , User + , userDecoder + , UserId + , userIdDecoder + , getUserName + ) + +import Json.Decode as Decode exposing (Decoder) +import Dict exposing (Dict) + +type alias Users = Dict UserId User + +type alias UserId = Int + +type alias User = + { name : String + , email : String + } + +usersDecoder : Decoder Users +usersDecoder = Decode.map Dict.fromList (Decode.list userWithIdDecoder) + +userWithIdDecoder : Decode.Decoder (UserId, User) +userWithIdDecoder = + Decode.map2 (,) + (Decode.field "id" userIdDecoder) + userDecoder + +userIdDecoder : Decoder UserId +userIdDecoder = Decode.int + +userDecoder : Decoder User +userDecoder = + Decode.map2 User + (Decode.field "name" Decode.string) + (Decode.field "email" Decode.string) + +getUserName : Users -> UserId -> Maybe String +getUserName users userId = + Dict.get userId users + |> Maybe.map .name -- cgit v1.2.3