aboutsummaryrefslogtreecommitdiff
path: root/src/client/Model/User.elm
diff options
context:
space:
mode:
authorJoris2017-03-26 21:10:42 +0200
committerJoris2017-03-26 21:10:42 +0200
commit1e47a7754ca38bd1a6c74765d8378caf68ce4619 (patch)
treed0d9238479dc2529a1b558bbbcde346e7e8c2935 /src/client/Model/User.elm
parentc0ac16a713c4e53cf6af8e72a6d5f6b8ac5d6456 (diff)
downloadbudget-1e47a7754ca38bd1a6c74765d8378caf68ce4619.tar.gz
budget-1e47a7754ca38bd1a6c74765d8378caf68ce4619.tar.bz2
budget-1e47a7754ca38bd1a6c74765d8378caf68ce4619.zip
Separate client and server watch
Diffstat (limited to 'src/client/Model/User.elm')
-rw-r--r--src/client/Model/User.elm44
1 files changed, 44 insertions, 0 deletions
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