Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

É possível realizar queries no @TypeConverter?

Como o curso não abordou como fazer para converter objetos em objetos de banco, eu pensei na possibilidade de se utilizar o ID do objeto para buscá-lo no banco e utilizar isso no TypeConverter, assim, converteria o objeto em um Long via campo ID e de um Long, eu buscaria no banco via o mesmo campo ID. Porém o gerador de banco precisa de um context que eu não tenho acesso na classe converter. Como resolver este problema?

Segue um exemplo do que estou tentando fazer (Kotlin):

class TextureConverter {
    companion object {

        @TypeConverter
        @JvmStatic
        fun toLong(texture: Texture): Long {
            return texture.id
        }
        @TypeConverter
        @JvmStatic
        fun toTexture(id: Long): Texture {
            val generator = DatabaseGenerator()
            val database = generator.generate(context) // este context não existe neste ponto. Não sei como buscar um context que possa ser usado aqui.
            val dao = database.getTextureDAO()
            return dao.getByID(id)
        }
    }
}

Tem como fazer o que quero fazer, ou existe outra forma?

Obrigado!

Edit:

Faz tempo que fiz esse curso e quis pegar pra trabalhar numa coisa aqui e não lembro muito bem de tudo. Será que adicionar como parâmetro resolve meu problema?

Não sei se o Room faz alguma mágica por baixo dos panos que obrigue esses métodos a ter apenas um parâmetro...

4 respostas
solução!

Fala ai Guilherme, tudo bem ?

Cara talvez seja mais interessante pra recuperar o seu contexto através de injeção de dependência. Existem alguns frameworks pra isso, como está usando kotlin, vou recomendar um que uso nos projetos que trabalho: koin.

Talvez seja o melhor formato

Parece interessante. Vou tentar usar isso.

Aproveitando, sabes onde posso encontrar uma explicação bem elaborada de como trabalhar com relacionamentos no Room? Porque se eu conseguir fazer relacionamentos, talvez meu problema se resolva com isso.

Porque essa abordagem que estou tentando fazer talvez vá tornar o app lento carregando objetos que tem objetos que tem objetos via SQL. Meu app vai ter diversos relacionamentos entre entidades e infelizmente não posso depender de um server... Preciso que tudo seja feito pelo app.

Obrigado!

Faz sentido seu ponto cara...

Eu expliquei isso para um aluno num momento longínquo da vida, acho que deve ser útil pra ti agora: https://cursos.alura.com.br/forum/topico-relacionamento-entre-entidades-com-o-room-62895

Obrigado, Matheus!