@@ -414,9 +414,13 @@ async def get_channels_by_user_id(self, user_id: str, db: Optional[AsyncSession]
414414 all_channels = list (membership_channels ) + list (standard_channels )
415415 channel_ids = [c .id for c in all_channels ]
416416 grants_map = await AccessGrants .get_grants_by_resources ('channel' , channel_ids , db = db )
417- return [await self ._to_channel_model (c , access_grants = grants_map .get (c .id , []), db = db ) for c in all_channels ]
417+ return [
418+ await self ._to_channel_model (c , access_grants = grants_map .get (c .id , []), db = db ) for c in all_channels
419+ ]
418420
419- async def get_dm_channel_by_user_ids (self , user_ids : list [str ], db : Optional [AsyncSession ] = None ) -> Optional [ChannelModel ]:
421+ async def get_dm_channel_by_user_ids (
422+ self , user_ids : list [str ], db : Optional [AsyncSession ] = None
423+ ) -> Optional [ChannelModel ]:
420424 async with get_async_db_context (db ) as db :
421425 # Ensure uniqueness in case a list with duplicates is passed
422426 unique_user_ids = list (set (user_ids ))
@@ -462,9 +466,7 @@ async def add_members_to_channel(
462466 # 1. Collect all user_ids including groups + inviter
463467 requested_users = await self ._collect_unique_user_ids (invited_by , user_ids , group_ids )
464468
465- result = await db .execute (
466- select (ChannelMember .user_id ).filter (ChannelMember .channel_id == channel_id )
467- )
469+ result = await db .execute (select (ChannelMember .user_id ).filter (ChannelMember .channel_id == channel_id ))
468470 existing_users = {row [0 ] for row in result .all ()}
469471
470472 new_user_ids = requested_users - existing_users
@@ -512,7 +514,9 @@ async def is_user_channel_manager(self, channel_id: str, user_id: str, db: Optio
512514 membership = result .scalars ().first ()
513515 return membership is not None
514516
515- async def join_channel (self , channel_id : str , user_id : str , db : Optional [AsyncSession ] = None ) -> Optional [ChannelMemberModel ]:
517+ async def join_channel (
518+ self , channel_id : str , user_id : str , db : Optional [AsyncSession ] = None
519+ ) -> Optional [ChannelMemberModel ]:
516520 async with get_async_db_context (db ) as db :
517521 # Check if the membership already exists
518522 result = await db .execute (
@@ -581,11 +585,11 @@ async def get_member_by_channel_and_user_id(
581585 membership = result .scalars ().first ()
582586 return ChannelMemberModel .model_validate (membership ) if membership else None
583587
584- async def get_members_by_channel_id (self , channel_id : str , db : Optional [AsyncSession ] = None ) -> list [ChannelMemberModel ]:
588+ async def get_members_by_channel_id (
589+ self , channel_id : str , db : Optional [AsyncSession ] = None
590+ ) -> list [ChannelMemberModel ]:
585591 async with get_async_db_context (db ) as db :
586- result = await db .execute (
587- select (ChannelMember ).filter (ChannelMember .channel_id == channel_id )
588- )
592+ result = await db .execute (select (ChannelMember ).filter (ChannelMember .channel_id == channel_id ))
589593 memberships = result .scalars ().all ()
590594 return [ChannelMemberModel .model_validate (membership ) for membership in memberships ]
591595
@@ -613,7 +617,9 @@ async def pin_channel(
613617 await db .commit ()
614618 return True
615619
616- async def update_member_last_read_at (self , channel_id : str , user_id : str , db : Optional [AsyncSession ] = None ) -> bool :
620+ async def update_member_last_read_at (
621+ self , channel_id : str , user_id : str , db : Optional [AsyncSession ] = None
622+ ) -> bool :
617623 async with get_async_db_context (db ) as db :
618624 result = await db .execute (
619625 select (ChannelMember ).filter (
@@ -658,11 +664,13 @@ async def update_member_active_status(
658664 async def is_user_channel_member (self , channel_id : str , user_id : str , db : Optional [AsyncSession ] = None ) -> bool :
659665 async with get_async_db_context (db ) as db :
660666 result = await db .execute (
661- select (ChannelMember ).filter (
667+ select (ChannelMember )
668+ .filter (
662669 ChannelMember .channel_id == channel_id ,
663670 ChannelMember .user_id == user_id ,
664671 ChannelMember .is_active .is_ (True ),
665- ).limit (1 )
672+ )
673+ .limit (1 )
666674 )
667675 membership = result .scalars ().first ()
668676 return membership is not None
@@ -726,11 +734,13 @@ async def get_channels_by_file_id_and_user_id(
726734 # --- Case A: group or dm => user must be an active member ---
727735 if channel .type in ['group' , 'dm' ]:
728736 result = await db .execute (
729- select (ChannelMember ).filter (
737+ select (ChannelMember )
738+ .filter (
730739 ChannelMember .channel_id == channel .id ,
731740 ChannelMember .user_id == user_id ,
732741 ChannelMember .is_active .is_ (True ),
733- ).limit (1 )
742+ )
743+ .limit (1 )
734744 )
735745 membership = result .scalars ().first ()
736746 if membership :
@@ -774,11 +784,13 @@ async def get_channel_by_id_and_user_id(
774784 # If the channel is a group or dm, read access requires membership (active)
775785 if channel .type in ['group' , 'dm' ]:
776786 result = await db .execute (
777- select (ChannelMember ).filter (
787+ select (ChannelMember )
788+ .filter (
778789 ChannelMember .channel_id == id ,
779790 ChannelMember .user_id == user_id ,
780791 ChannelMember .is_active .is_ (True ),
781- ).limit (1 )
792+ )
793+ .limit (1 )
782794 )
783795 membership = result .scalars ().first ()
784796 if membership :
@@ -863,9 +875,7 @@ async def set_file_message_id_in_channel_by_id(
863875 ) -> bool :
864876 try :
865877 async with get_async_db_context (db ) as db :
866- result = await db .execute (
867- select (ChannelFile ).filter_by (channel_id = channel_id , file_id = file_id )
868- )
878+ result = await db .execute (select (ChannelFile ).filter_by (channel_id = channel_id , file_id = file_id ))
869879 channel_file = result .scalars ().first ()
870880 if not channel_file :
871881 return False
@@ -878,7 +888,9 @@ async def set_file_message_id_in_channel_by_id(
878888 except Exception :
879889 return False
880890
881- async def remove_file_from_channel_by_id (self , channel_id : str , file_id : str , db : Optional [AsyncSession ] = None ) -> bool :
891+ async def remove_file_from_channel_by_id (
892+ self , channel_id : str , file_id : str , db : Optional [AsyncSession ] = None
893+ ) -> bool :
882894 try :
883895 async with get_async_db_context (db ) as db :
884896 await db .execute (delete (ChannelFile ).filter_by (channel_id = channel_id , file_id = file_id ))
@@ -921,13 +933,17 @@ async def insert_webhook(
921933 await db .commit ()
922934 return webhook
923935
924- async def get_webhooks_by_channel_id (self , channel_id : str , db : Optional [AsyncSession ] = None ) -> list [ChannelWebhookModel ]:
936+ async def get_webhooks_by_channel_id (
937+ self , channel_id : str , db : Optional [AsyncSession ] = None
938+ ) -> list [ChannelWebhookModel ]:
925939 async with get_async_db_context (db ) as db :
926940 result = await db .execute (select (ChannelWebhook ).filter (ChannelWebhook .channel_id == channel_id ))
927941 webhooks = result .scalars ().all ()
928942 return [ChannelWebhookModel .model_validate (w ) for w in webhooks ]
929943
930- async def get_webhook_by_id (self , webhook_id : str , db : Optional [AsyncSession ] = None ) -> Optional [ChannelWebhookModel ]:
944+ async def get_webhook_by_id (
945+ self , webhook_id : str , db : Optional [AsyncSession ] = None
946+ ) -> Optional [ChannelWebhookModel ]:
931947 async with get_async_db_context (db ) as db :
932948 result = await db .execute (select (ChannelWebhook ).filter (ChannelWebhook .id == webhook_id ))
933949 webhook = result .scalars ().first ()
0 commit comments