aboutsummaryrefslogtreecommitdiff
path: root/src/client/Model/User.elm
diff options
context:
space:
mode:
authorJoris2015-09-05 13:53:36 +0200
committerJoris2015-09-05 13:53:36 +0200
commit3b738e0d4cc65f314da7389d4542ec826ba0f454 (patch)
treeee99236117ad698974c5a6e40ab170f617cb06f3 /src/client/Model/User.elm
parent139d4a103a6a48880e5f12a796033956f223563c (diff)
downloadbudget-3b738e0d4cc65f314da7389d4542ec826ba0f454.tar.gz
budget-3b738e0d4cc65f314da7389d4542ec826ba0f454.tar.bz2
budget-3b738e0d4cc65f314da7389d4542ec826ba0f454.zip
Using UserId instead of UserName to indentify users
Diffstat (limited to 'src/client/Model/User.elm')
-rw-r--r--src/client/Model/User.elm42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/client/Model/User.elm b/src/client/Model/User.elm
new file mode 100644
index 0000000..b0d62a6
--- /dev/null
+++ b/src/client/Model/User.elm
@@ -0,0 +1,42 @@
+module Model.User
+ ( Users
+ , usersDecoder
+ , User
+ , userDecoder
+ , UserId
+ , userIdDecoder
+ , getUserName
+ ) where
+
+import Json.Decode as Json exposing ((:=))
+import Dict exposing (Dict)
+
+type alias Users = Dict UserId User
+
+type alias UserId = Int
+
+type alias User =
+ { name : String
+ , email : String
+ }
+
+usersDecoder : Json.Decoder Users
+usersDecoder = Json.map Dict.fromList (Json.list userWithIdDecoder)
+
+userWithIdDecoder : Json.Decoder (UserId, User)
+userWithIdDecoder =
+ userDecoder `Json.andThen` (\user -> Json.map (\id -> (id, user)) ("id" := userIdDecoder))
+
+userDecoder : Json.Decoder User
+userDecoder =
+ Json.object2 User
+ ("name" := Json.string)
+ ("email" := Json.string)
+
+userIdDecoder : Json.Decoder UserId
+userIdDecoder = Json.int
+
+getUserName : Users -> UserId -> Maybe String
+getUserName users userId =
+ Dict.get userId users
+ |> Maybe.map .name