diff options
author | William Carroll <wpcarro@gmail.com> | 2020-07-25T17·32+0100 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2020-07-25T17·32+0100 |
commit | 722205b0818a7fb2280941554baaff9400808d65 (patch) | |
tree | 483128aff3695a56bfca86a2a8d84f2d71336a73 /src/Types.hs | |
parent | d01161656419370032f19fd659e30c349cac93cb (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.hs | 29 |
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 |