@@ -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
@@ -535,6 +555,12 @@ updateChannel uId req = commitedTransactionallyUpdate $ do
535 _ <- manipulateParams updateNamedChannelQ $ addUserToChannelUpdate uId (req {namedChannelPeopleIds = uIds})
555 _ <- manipulateParams updateNamedChannelQ $ addUserToChannelUpdate uId (req {namedChannelPeopleIds = uIds})
536 return ()
556 return ()
558+getFaculty :: Text -> StaticPQ Faculty
559+getFaculty t = runQueryParams getFacultyQ (Only t) >>= firstRow >>= fromMaybe404
561+updateFaculty :: Faculty -> StaticPQ ()
562+updateFaculty fac = void $ manipulateParams updateFacultyQ fac
538getChannelPosts
564getChannelPosts
539 :: UserId
565 :: UserId
540 -> Maybe PostId
566 -> Maybe PostId
@@ -726,5 +752,9 @@ liftMaybe Nothing _ = pure Nothing
726liftMaybe (Just a) f = f a
752liftMaybe (Just a) f = f a
728fromMaybe500 :: Maybe a -> StaticPQ a
754fromMaybe500 :: Maybe a -> StaticPQ a
729−fromMaybe500 Nothing = lift $ S.throwError S.err404
755+fromMaybe500 Nothing = lift $ S.throwError S.err500
756+fromMaybe500 (Just a) = return a
758+fromMaybe404 :: Maybe a -> StaticPQ a
759+fromMaybe404 Nothing = lift $ S.throwError S.err404
730−fromMaybe500 (Just a) = return a
760+fromMaybe404 (Just a) = return a