Bom dia, Implementei um calendário fazendo uma simulação em meu projeto, estou utilizando o MaterialDatePicker para utilizar em meu formulário, quero implementar em meu Room só que eu estava dando uma olhada e eu acho que preciso converter para o tipo String em meu AppDataBase, é possível fazer essa modificação ou preciso utilizar uma outra técnica queria uma ajuda nessa questão para fazer o converter para salvar esses dados no meu projeto,
Meu AppDataBase
package com.aifarmtech.orgs.database
import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import androidx.room.TypeConverters
import com.aifarmtech.orgs.database.Converters.Converters
import com.aifarmtech.orgs.database.Converters.ConvertersCalendario
import com.aifarmtech.orgs.database.dao.ProdutoCalendarioDao
import com.aifarmtech.orgs.database.dao.ProdutoDao
import com.aifarmtech.orgs.database.dao.UsuarioDao
import com.aifarmtech.orgs.model.Produto
import com.aifarmtech.orgs.model.ProdutoDia
import com.aifarmtech.orgs.model.Usuario
@TypeConverters(Converters::class, ConvertersCalendario::class)
@Database(
entities = [Produto::class,
Usuario::class,
ProdutoDia::class],
version = 4,
exportSchema = true
)
abstract class AppDataBase : RoomDatabase() {
abstract fun ProdutoDao(): ProdutoDao
abstract fun UsuarioDao(): UsuarioDao
abstract fun ProdutoCalendarioDao(): ProdutoCalendarioDao
companion object {
@Volatile
private var db: AppDataBase? = null
fun instancia(context: Context): AppDataBase {
return db ?: Room.databaseBuilder(
context,
AppDataBase::class.java,
"orgs.db"
).allowMainThreadQueries().addMigrations(
MIGRATION_1_2,
MIGRATION_2_3,
MIGRATION_3_4
)
.build()
.also {
db = it
}
}
}
}
Meu ProdutoDia :
package com.aifarmtech.orgs.model
import android.os.Parcelable
import androidx.room.Entity
import androidx.room.PrimaryKey
import kotlinx.parcelize.Parcelize
import java.time.LocalDate
@Entity
@Parcelize
data class ProdutoDia(
@PrimaryKey val id: String,
val dia: String,
val semana: String,
val calendario: LocalDate = LocalDate.now()
) : Parcelable
Nessa questão na minha varíavel do calendário é o LocalDate, em meu calendario deveria fazer alguma modificação aqui? ou fazer o Converters no AppDataBase
meu ProdutoDiaDao
package com.aifarmtech.orgs.database.dao
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.Query
import com.aifarmtech.orgs.model.ProdutoDia
@Dao
interface ProdutoCalendarioDao {
@Query("SELECT * FROM ProdutoDia")
fun buscarTodos() : List<ProdutoDia>
@Insert
fun salvar(vararg produtoDia: ProdutoDia)
}
Queria em uma ajuda nessa parte dei uma olhada na documenção mais é um pouco diferente não fazer os converters tentei usar o Chat-GPT 3.5 Turbo, mais também não consegui achar, e quando eu aperto no martelo(Make, build) aparece o seguinte erro !!
private final java.time.LocalDate calendario = null;
eu acho que deveria fazer o converter por que o SQL não tem suporte com essa variável do meu ProdutoDia, e muito Obrigado por me ajudar!
Projeto que utilizei como simulação do Alex Felipe!!
Referenciar dados complexos usando o Room
Obrigado!