aboutsummaryrefslogtreecommitdiff
path: root/src/client/elm/Model/Category.elm
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/elm/Model/Category.elm')
-rw-r--r--src/client/elm/Model/Category.elm35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/client/elm/Model/Category.elm b/src/client/elm/Model/Category.elm
new file mode 100644
index 0000000..8b653a7
--- /dev/null
+++ b/src/client/elm/Model/Category.elm
@@ -0,0 +1,35 @@
+module Model.Category exposing
+ ( Categories
+ , Category
+ , CategoryId
+ , categoriesDecoder
+ , categoryIdDecoder
+ , empty
+ )
+
+import Json.Decode as Decode exposing (Decoder)
+import Utils.Json as Json
+import Dict exposing (Dict)
+
+type alias Categories = Dict CategoryId Category
+
+type alias CategoryId = Int
+
+type alias Category =
+ { name : String
+ , color : String
+ }
+
+categoriesDecoder : Decoder Categories
+categoriesDecoder =
+ Json.dictDecoder (Decode.field "id" categoryIdDecoder) <|
+ Decode.map2
+ Category
+ (Decode.field "name" Decode.string)
+ (Decode.field "color" Decode.string)
+
+categoryIdDecoder : Decoder CategoryId
+categoryIdDecoder = Decode.int
+
+empty : Categories
+empty = Dict.empty