handler.py 文件源码

python
阅读 39 收藏 0 点赞 0 评论 0

项目:dino 作者: thenetcircle 项目源码 文件源码
def join_room(self, user_id: str, user_name: str, room_id: str, room_name: str) -> None:
        self.get_room_name(room_id)

        @with_session
        def _join_room(session=None):
            room = session.query(Rooms).filter(Rooms.uuid == room_id).first()
            user = session.query(Users).filter(Users.uuid == user_id).first()
            if user is None:
                user = Users()
                user.uuid = user_id
                user.name = user_name
                session.add(user)

            if room is None:
                logger.error('no such room %s (%s)' % (room_id, room_name))
                raise NoSuchRoomException(room_id)

            user.rooms.append(room)
            session.add(room)

            room.users.append(user)
            session.add(room)
            session.commit()

        try:
            _join_room()
        except UnmappedInstanceError as e:
            error_msg = 'user "%s" (%s) tried to join room "%s" (%s), but the room was None when joining; ' \
                        'likely removed after check and before joining: %s'
            logger.warning(error_msg % (user_id, user_name, room_id, room_name, str(e)))
        except IntegrityError as e:
            logger.warning('user "%s" (%s) tried to join room "%s" (%s) but it has been deleted: %s' %
                           (user_name, user_id, room_name, room_id, str(e)))
            raise NoSuchRoomException(room_id)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号