about summary refs log tree commit diff
path: root/src/Types.hs
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-07-25T17·32+0100
committerWilliam Carroll <wpcarro@gmail.com>2020-07-25T17·32+0100
commit722205b0818a7fb2280941554baaff9400808d65 (patch)
tree483128aff3695a56bfca86a2a8d84f2d71336a73 /src/Types.hs
parentd01161656419370032f19fd659e30c349cac93cb (diff)
Remodel Account type
Remove unnecessary fields:
- name
- age

Add domain-specific fields:
- username
- password
- email
- role
Diffstat (limited to 'src/Types.hs')
-rw-r--r--src/Types.hs29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/Types.hs b/src/Types.hs
index 813a4b51c305..fc1516e5b746 100644
--- a/src/Types.hs
+++ b/src/Types.hs
@@ -7,6 +7,7 @@
 {-# LANGUAGE QuasiQuotes #-}
 {-# LANGUAGE TemplateHaskell #-}
 {-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NamedFieldPuns #-}
 --------------------------------------------------------------------------------
 module Types where
 --------------------------------------------------------------------------------
@@ -17,21 +18,31 @@ import Database.Persist.TH
 
 share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
 Account
-  name Text
-  age  Int
-  UniqueName name
+  username Text
+  password Text
+  email Text
+  role Text
+  UniqueUsername username
+  UniqueEmail email
   deriving Eq Read Show
 |]
 
 instance FromJSON Account where
-  parseJSON = withObject "User" $ \ v ->
-    Account <$> v .: "name"
-            <*> v .: "age"
+  parseJSON = withObject "Account" $ \ v ->
+    Account <$> v .: "username"
+            <*> v .: "password"
+            <*> v .: "email"
+            <*> v .: "role"
 
 instance ToJSON Account where
-  toJSON (Account name age) =
-    object [ "name" .= name
-           , "age"  .= age
+  toJSON (Account{ accountUsername
+                 , accountPassword
+                 , accountEmail
+                 , accountRole }) =
+    object [ "username" .= accountUsername
+           , "password" .= accountPassword
+           , "email" .= accountEmail
+           , "role" .= accountRole
            ]
 
 newtype Username = Username Text