File tree Expand file tree Collapse file tree 4 files changed +40
-0
lines changed
libs/wire-subsystems/src/Wire Expand file tree Collapse file tree 4 files changed +40
-0
lines changed Original file line number Diff line number Diff line change @@ -38,5 +38,6 @@ data UserGroupStore m a where
38
38
UpdateUsers :: UserGroupId -> Vector UserId -> UserGroupStore m ()
39
39
RemoveUser :: UserGroupId -> UserId -> UserGroupStore m ()
40
40
UpdateUserGroupChannels :: TeamId -> UserGroupId -> Vector ConvId -> UserGroupStore m ()
41
+ ListUserGroupChannels :: TeamId -> UserGroupId -> UserGroupStore m (Vector ConvId )
41
42
42
43
makeSem ''UserGroupStore
Original file line number Diff line number Diff line change @@ -54,6 +54,7 @@ interpretUserGroupStoreToPostgres =
54
54
UpdateUsers gid uids -> updateUsers gid uids
55
55
RemoveUser gid uid -> removeUser gid uid
56
56
UpdateUserGroupChannels _ gid convIds -> updateUserGroupChannels gid convIds
57
+ ListUserGroupChannels _ gid -> listUserGroupChannels gid
57
58
58
59
updateUsers :: (UserGroupStorePostgresEffectConstraints r ) => UserGroupId -> Vector UserId -> Sem r ()
59
60
updateUsers gid uids = do
@@ -443,6 +444,28 @@ updateUserGroupChannels gid convIds = do
443
444
on conflict (user_group_id) do nothing
444
445
|]
445
446
447
+ listUserGroupChannels ::
448
+ forall r .
449
+ (UserGroupStorePostgresEffectConstraints r ) =>
450
+ UserGroupId ->
451
+ Sem r (Vector ConvId )
452
+ listUserGroupChannels gid = do
453
+ pool <- input
454
+ eitherErrorOrUnit <- liftIO $ use pool session
455
+ either throw pure eitherErrorOrUnit
456
+ where
457
+ session :: Session (Vector ConvId )
458
+ session = statement gid selectStatement
459
+
460
+ selectStatement :: Statement UserGroupId (Vector ConvId )
461
+ selectStatement =
462
+ dimap
463
+ toUUID
464
+ (fmap Id )
465
+ [vectorStatement |
466
+ select (channel_id :: uuid) from user_group_channel where user_group_id = ($1 :: uuid)
467
+ |]
468
+
446
469
crudUser ::
447
470
forall r .
448
471
(UserGroupStorePostgresEffectConstraints r ) =>
Original file line number Diff line number Diff line change @@ -33,5 +33,6 @@ data UserGroupSubsystem m a where
33
33
UpdateUsers :: UserId -> UserGroupId -> Vector UserId -> UserGroupSubsystem m ()
34
34
RemoveUser :: UserId -> UserGroupId -> UserId -> UserGroupSubsystem m ()
35
35
UpdateChannels :: UserId -> UserGroupId -> Vector ConvId -> UserGroupSubsystem m ()
36
+ ListChannels :: UserId -> UserGroupId -> UserGroupSubsystem m (Vector ConvId )
36
37
37
38
makeSem ''UserGroupSubsystem
Original file line number Diff line number Diff line change @@ -53,6 +53,7 @@ interpretUserGroupSubsystem = interpret $ \case
53
53
UpdateUsers updater groupId uids -> updateUsers updater groupId uids
54
54
RemoveUser remover groupId removeeId -> removeUser remover groupId removeeId
55
55
UpdateChannels remover groupId channelIds -> updateChannels remover groupId channelIds
56
+ ListChannels remover groupId -> listChannels remover groupId
56
57
57
58
data UserGroupSubsystemError
58
59
= UserGroupNotATeamAdmin
@@ -350,3 +351,17 @@ updateChannels performer groupId channelIds = do
350
351
teamId <- getTeamAsAdmin performer >>= note UserGroupNotATeamAdmin
351
352
traverse_ (getTeamConv performer teamId >=> note UserGroupChannelNotFound ) channelIds
352
353
Store. updateUserGroupChannels teamId groupId channelIds
354
+
355
+ listChannels ::
356
+ ( Member UserSubsystem r ,
357
+ Member Store. UserGroupStore r ,
358
+ Member (Error UserGroupSubsystemError ) r ,
359
+ Member TeamSubsystem r
360
+ ) =>
361
+ UserId ->
362
+ UserGroupId ->
363
+ Sem r (Vector ConvId )
364
+ listChannels performer groupId = do
365
+ void $ getUserGroup performer groupId >>= note UserGroupNotFound
366
+ teamId <- getUserTeam performer >>= note UserGroupNotATeamAdmin
367
+ Store. listUserGroupChannels teamId groupId
You can’t perform that action at this time.
0 commit comments