implementation module UserDBTasks from TSt import :: Task, :: TSt from TSt import mkInstantTask, mkTaskFunction import StdList, StdMaybe from UserDB import :: User from UserDB import qualified getUser from UserDB import qualified getUsers from UserDB import qualified getUsersWithRole from UserDB import qualified getDisplayNames from UserDB import qualified getRoles from UserDB import qualified authenticateUser from UserDB import qualified createUser from UserDB import qualified updateUser from UserDB import qualified deleteUser import InteractionTasks, CoreCombinators getUser :: !UserName -> Task User getUser username = mkInstantTask "getUser" (mkTaskFunction (UserDB@getUser username)) getUsers :: Task [User] getUsers = mkInstantTask "getUsers" (mkTaskFunction UserDB@getUsers) getUsersWithRole :: !Role -> Task [User] getUsersWithRole role = mkInstantTask "getUsersWithRole" (mkTaskFunction (UserDB@getUsersWithRole role)) getDisplayNames :: ![UserName] -> Task [DisplayName] getDisplayNames usernames = mkInstantTask "getDisplayNames" (mkTaskFunction (UserDB@getDisplayNames usernames)) getRoles :: ![UserName] -> Task [[Role]] getRoles usernames = mkInstantTask "getRoles" (mkTaskFunction (UserDB@getRoles usernames)) authenticateUser :: !String !String -> Task (Maybe User) authenticateUser username password = mkInstantTask "authenticateUser" (mkTaskFunction (UserDB@authenticateUser username password)) createUser :: !User -> Task User createUser user = mkInstantTask "createUser" (mkTaskFunction (UserDB@createUser user)) updateUser :: !User -> Task User updateUser user = mkInstantTask "updateUser" (mkTaskFunction (UserDB@updateUser user)) deleteUser :: !User -> Task User deleteUser user = mkInstantTask "deleteUser" (mkTaskFunction (UserDB@deleteUser user)) chooseUser :: !question -> Task User | html question chooseUser question = getUsers >>= \users -> enterChoice question users chooseUserWithRole :: !question !String -> Task User | html question chooseUserWithRole question role = getUsersWithRole role >>= \users -> enterChoice question users