All Superinterfaces:
org.springframework.data.repository.CrudRepository<UserEntity,String>, org.springframework.data.repository.Repository<UserEntity,String>, RepositoryContract<UserContract>, UserContractRepository

@Repository public interface UserRepository extends UserContractRepository, org.springframework.data.repository.CrudRepository<UserEntity,String>
A interface do repositório de usuário, UserRepository, estende as interfaces UserContractRepository e CrudRepository.

Since:
1.0.0
Author:
diegoneves
See Also:
  • Field Details

    • INVALID_ID_MESSAGE

      static final Integer INVALID_ID_MESSAGE
    • REQUIRED_USER_ERROR_MESSAGE

      static final Integer REQUIRED_USER_ERROR_MESSAGE
    • INVALID_UUID_FORMAT_MESSAGE

      static final Integer INVALID_UUID_FORMAT_MESSAGE
    • INVALID_EMAIL_ERROR_MESSAGE

      static final Integer INVALID_EMAIL_ERROR_MESSAGE
  • Method Details

    • findByEmail

      Optional<UserEntity> findByEmail(String email)
      Este método busca um usuário pelo email fornecido e retorna um Optional de UserEntity. Se nenhum usuário for encontrado com o email fornecido, este método retornará um Optional vazio.
      Parameters:
      email - O email do usuário a ser buscado.
      Returns:
      um Optional de UserEntity.
    • findEntityById

      default UserContract findEntityById(String id)
      Description copied from interface: RepositoryContract
      Encontra uma entidade pelo seu identificador.
      Specified by:
      findEntityById in interface RepositoryContract<UserContract>
      Parameters:
      id - o identificador único da entidade que deve ser procurada.
      Returns:
      a entidade encontrada ou null se nenhuma entidade com o identificador especificado pôde ser encontrada.
    • retrieveUserEntityById

      private UserEntity retrieveUserEntityById(String id)
      Este método retorna uma entidade de usuário com base no ID fornecido. Antes de tentar recuperar o usuário, o método valida o ID do usuário fornecido.

      Depois de validar o ID do usuário, usando o método validateUserId(String), este método tenta buscar a entidade do usuário. Se a entidade do usuário não existir, retorna null.

      Parameters:
      id - O ID da entidade do usuário a ser retornada. Não pode ser nulo ou uma String vazia.
      Returns:
      A UserEntity que corresponde ao ID fornecido. Se nenhuma UserEntity corresponder ao fornecido, este método retorna null.
      Throws:
      UserEntityFailuresException - Se o ID do usuário fornecido for nulo, vazio ou não for um UUID válido.
      See Also:
    • getUserMapper

      private UserMapper getUserMapper()
      Este método é responsável por criar e retornar uma nova instância de UserMapper.

      A classe UserMapper é uma implementação da interface MapperStrategy que fornece funcionalidade para mapear um objeto UserEntity (que é compatível com o modelo de dados do banco) para um objeto User, que representa o modelo de negócio do sistema. Assim, a classe UserMapper ajuda na conversão entre o modelo de dados e o modelo de negócio quando estamos lidando com informações de usuário.

      Returns:
      uma nova instância de UserMapper.
    • validateUserId

      private void validateUserId(String id) throws UserEntityFailuresException
      Método de validação do ID do usuário. Este método realiza duas verificações principais:
      1. Certifica-se de que o ID do usuário não é nulo ou vazio.
      2. Certifica-se de que o ID do usuário é um UUID válido.

      Caso alguma dessas verificações falhe, uma UserEntityFailuresException será lançada.

      Parameters:
      id - O ID do usuário que deve ser validado.
      Throws:
      UserEntityFailuresException - Se o ID do usuário for nulo, vazio ou não for um UUID válido.
    • retrieveAll

      default List<UserContract> retrieveAll()
      Description copied from interface: RepositoryContract
      Encontra todas as entidades de um determinado tipo.
      Specified by:
      retrieveAll in interface RepositoryContract<UserContract>
      Returns:
      uma lista contendo todas as entidades ou uma lista vazia se não houver entidades.
    • mapEntityList

      private List<UserContract> mapEntityList(List<UserEntity> entities)
      Este método é usado para mapear uma lista de objetos UserEntity para uma lista de objetos UserContract.

      Se a lista de UserEntity fornecida é nula ou vazia, o método retorna uma lista vazia imutável. Caso contrário, o método itera sobre esta lista, mapeando cada objeto UserEntity para sua representação como um objeto UserContract, usando UserMapper.mapFrom(UserEntity) para realizar a transformação.

      Parameters:
      entities - uma lista de UserEntity a serem mapeados para objetos UserContract. Pode ser nula ou vazia.
      Returns:
      uma lista de objetos UserContract correspondente aos UserEntity's fornecidos. Se o UserEntity for nulo ou vazio, uma lista vazia imutável é retornada.
    • persist

      default UserContract persist(UserContract entity)
      Description copied from interface: RepositoryContract
      Salva uma entidade.
      Specified by:
      persist in interface RepositoryContract<UserContract>
      Parameters:
      entity - a entidade que deve ser salva.
      Returns:
      a entidade salva.
    • deleteEntityById

      default void deleteEntityById(String id)
      Description copied from interface: RepositoryContract
      Deleta uma entidade pelo seu identificador.
      Specified by:
      deleteEntityById in interface RepositoryContract<UserContract>
      Parameters:
      id - o identificador único da entidade que deve ser deletada.
    • findUserEntityByUserEmail

      default UserContract findUserEntityByUserEmail(String userEmail)
      Description copied from interface: UserContractRepository
      Este método está na interface UserContractRepository e ele retorna um objeto UserContract ao procurar um usuário pelo seu endereço de email.

      Em situações reais, esta função pode ser usada para recuperar as informações de um usuário para fins de login ou registro. Quando estamos implementando um processo de login, podemos procurar o usuário que se encontra com o endereço de email fornecido. Se pudermos encontrar tal usuário, recuperamos os detalhes do usuário e o habilitamos para o próximo passo no processo de login.

      Mesmo caso para o processo de registro, procuramos o email e vemos se algum usuário já está registrado com o endereço de email fornecido. Se for esse o caso, não permitimos mais o processo de registro e sugerimos que o usuário faça login em vez de se registrar.

      Para implementar essa função na classe de repositório real, podemos usar como base um método de busca por email fornecido pelo Spring Data JPA.

      Specified by:
      findUserEntityByUserEmail in interface UserContractRepository
      Parameters:
      userEmail - endereço de email do usuário como uma String. Utilizado para procurar um usuário no banco de dados. Ele não pode ser nulo ou vazio.
      Returns:
      um UserContract que representa as informações de usuário correspondentes ao email. Se nenhum usuário for encontrado com o email fornecido, retornará um valor nulo.
      See Also: