@@ -40,7 +40,9 @@ module Data.Query (
40 createGroupChat,
40 createGroupChat,
41 updateGroupChat,
41 updateGroupChat,
42 leaveGroupChat,
42 leaveGroupChat,
43− getGroupChatForUser
43+ getGroupChatForUser,
46import Squeal.PostgreSQL
48import Squeal.PostgreSQL
@@ -75,6 +77,7 @@ import Data.GroupChat
75import Data.Message
77import Data.Message
76import Server.Query.Dialog
78import Server.Query.Dialog
77import qualified Server.Query.Pagination as P
79import qualified Server.Query.Pagination as P
79-- MARK: Documentation
82-- MARK: Documentation
@@ -224,6 +227,23 @@ getAllChannelsForUserQ = selectStar $
224 where_ (#namedChannelFullOwner .== param @1) &
227 where_ (#namedChannelFullOwner .== param @1) &
225 orderBy [#namedChannelFullId & Desc]
228 orderBy [#namedChannelFullId & Desc]
230+updateFacultyQ :: Manipulation Schema (TuplePG Faculty) '[]
231+updateFacultyQ = insertRow #faculties
233+ Set (param @1) `as` #facultyName :*
234+ Set (param @2) `as` #facultyURL :*
235+ Set (param @3) `as` #facultyPath :*
236+ Set (param @4) `as` #facultyCampusName :*
237+ Set (param @5) `as` #facultyCampusCode :*
238+ Set (param @6) `as` #facultyTags
240+ (OnConflictDoNothing)
243+getFacultyQ :: Query Schema (TuplePG (Only Text)) (RowPG Faculty)
244+getFacultyQ = selectStar (from (table #faculties) &
245+ where_ (#facultyURL .== param @1))
227createNamedChannelQ :: Manipulation Schema (TuplePG NamedChannelCreation) (RowPG (Only NamedChannelId))
247createNamedChannelQ :: Manipulation Schema (TuplePG NamedChannelCreation) (RowPG (Only NamedChannelId))
228createNamedChannelQ = insertRow #channels
248createNamedChannelQ = insertRow #channels
@@ -550,6 +570,12 @@ updateChannel uId req = commitedTransactionallyUpdate $ do
550 _ <- manipulateParams updateNamedChannelQ $ addUserToChannelUpdate uId (req {namedChannelPeopleIds = uIds})
570 _ <- manipulateParams updateNamedChannelQ $ addUserToChannelUpdate uId (req {namedChannelPeopleIds = uIds})
551 return ()
571 return ()
573+getFaculty :: Text -> StaticPQ Faculty
574+getFaculty t = runQueryParams getFacultyQ (Only t) >>= firstRow >>= fromMaybe404
576+updateFaculty :: Faculty -> StaticPQ ()
577+updateFaculty fac = void $ manipulateParams updateFacultyQ fac
553getChannelPosts
579getChannelPosts
554 :: UserId
580 :: UserId
555 -> Maybe PostId
581 -> Maybe PostId
@@ -742,5 +768,9 @@ liftMaybe Nothing _ = pure Nothing
742liftMaybe (Just a) f = f a
768liftMaybe (Just a) f = f a
744fromMaybe500 :: Maybe a -> StaticPQ a
770fromMaybe500 :: Maybe a -> StaticPQ a
745−fromMaybe500 Nothing = lift $ S.throwError S.err404
771+fromMaybe500 Nothing = lift $ S.throwError S.err500
772+fromMaybe500 (Just a) = return a
774+fromMaybe404 :: Maybe a -> StaticPQ a
775+fromMaybe404 Nothing = lift $ S.throwError S.err404
746−fromMaybe500 (Just a) = return a
776+fromMaybe404 (Just a) = return a