Skip to content

Instantly share code, notes, and snippets.

@Akii
Created June 5, 2017 14:01
Show Gist options
  • Save Akii/bc1ceb71c267af75ed07b2250f2ea88a to your computer and use it in GitHub Desktop.
Save Akii/bc1ceb71c267af75ed07b2250f2ea88a to your computer and use it in GitHub Desktop.
registerUser :: UserName -> EmailAddress -> RegistrationAction ()
registerUser uname email = do
mst <- gets aggState
case mst of
Nothing -> raise (UserRegistered uname email)
Just st -> do
when (userExists st) (throwError UserAlreadyRegistered)
when (emailExists st) (throwError EmailAddressExists)
raise (UserRegistered uname email)
where
userExists = member uname
emailExists users = email `elem` fmap emailAddress (elems users)
registerUser' :: UserName -> EmailAddress -> RegistrationAction ()
registerUser' uname email = do
st <- fromMaybe mempty <$> gets aggState
when (userExists st) (throwError UserAlreadyRegistered)
when (emailExists st) (throwError EmailAddressExists)
raise (UserRegistered uname email)
where
userExists = member uname
emailExists users = email `elem` fmap emailAddress (elems users)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment