def create_users_topic_list( self, db: Session, *, id: str = id ):
      # Desestruturando (Unpacking) os valores do Request Body config          
     users = UsersRepository.get_by_topic(db, id=id)
             
     response_users = [response_user(user) for user in users]        
     
     return response_users
 def create_users_list( self, db: Session, ):
      # Desestruturando (Unpacking) os valores do Request Body config
     users = UsersRepository.get_all(db)
             
     response_users = [response_user(user) for user in users]        
     
     return response_users
    def validate_id( self, db: Session, *, id: str = id ) -> Dict[UsersModel,UserResponseSchema]:
        user = UsersRepository.get_by_id( db, id=id )        
        if not user:        
            raise HTTPException( status_code=400, detail="Usuário não encontrado." )

        return {
            "db_object": user,
            "response": response_user(user)
        }
    def update_user(

        self,
        db: Session,
        *,
        db_object: UsersModel,
        infos_object: Union[UserUpdateSchema,  Dict[str, Union[str, StatusOptions]]]

    ):        
        # Reforçando que o id que chega no Params seja o mesmo que o Request Body
        # infos_object['id'] = id 
        
        if "email" in infos_object:
            UsersService.validate_email(db, email=infos_object.email)
        if "username" in infos_object:
            UsersService.validate_username(db, username=infos_object.username)    
        if "password" in infos_object:       
            infos_object["password"] = Auth.hash_password(infos_object["password"])

        updated_user = UsersRepository.update(db, db_object=db_object, req_object=infos_object)
        
        return response_user(updated_user)
    def create_user( self, db: Session, *, object: UserRequestSchema ):

        created_user = UsersRepository.create(db, req_object=object)
    
        return response_user(created_user)
    def remove_user( self, db: Session, *, id: str = id ):        
        removed_user = UsersRepository.remove(db, id=id)

        return response_user(removed_user)