-
-
Save tinmegali/d4a477785f01e57066915a44543db6ed to your computer and use it in GitHub Desktop.
@Database(entities = arrayOf(Note::class, User::class), version = 1) | |
@TypeConverters(Converters::class) | |
abstract class AppDatabse : RoomDatabase() { | |
abstract fun userDAO(): UserDAO | |
abstract fun noteDAO(): NoteDAO | |
} |
package com.tinmegali.daggerwithkotlin.room | |
import android.arch.persistence.room.TypeConverter | |
import java.util.Date | |
class Converters { | |
@TypeConverter | |
fun fromTimestamp(value: Long?): Date? { | |
return if (value == null) null else Date(value) | |
} | |
@TypeConverter | |
fun dateToTimestamp(date: Date?): Long? { | |
return date?.time | |
} | |
} |
Awesome! Thanks.
How should we use the RoomConverters object?
here it is:
https://developer.android.com/training/data-storage/room/referencing-data
please note that @aouerfelli approach will not work if you need to use object members (for example instance of moshi)
please note that @aouerfelli approach will not work if you need to use object members (for example instance of moshi)
Please go into detail.
How should we use the RoomConverters object?
here it is:
https://developer.android.com/training/data-storage/room/referencing-data
@marco-silva0000 really appricate that. All of the examples I see on the internet never reference the official docs.
Converter ArrayList to String (gson) / String (gson) to ArrayList
class ListStringConverter {
@TypeConverter
fun fromString(value: String): List<String> {
val listType = object : TypeToken<List<String>>() {}.type
return Gson().fromJson(value, listType)
}
@TypeConverter
fun fromListLisr(list: List<String>): String {
val gson = Gson()
return gson.toJson(list)
}
}
Converter ArrayList to String (gson) / String (gson) to ArrayList
class ListStringConverter {
@TypeConverter fun fromString(value: String): List<String> { val listType = object : TypeToken<List<String>>() {}.type return Gson().fromJson(value, listType)
}
@TypeConverter fun fromListLisr(list: List<String>): String { val gson = Gson() return gson.toJson(list) }
}
Wouldn't be easier to do just:
class Converters {
@TypeConverter
fun toListOfStrings(flatStringList: String): List<String> {
return flatStringList.split(",")
}
@TypeConverter
fun fromListOfStrings(listOfString: List<String>): String {
return listOfString.joinToString(",")
}
}
Is there any way to Convert a single column of a table but in the same Type? Like from String to String?
How can i do it here if data is ProfileDataResponceModel
Main Profile class
@Entity(tableName = "profile_list")
data class ProfileResponseModel(
@Embedded(prefix = "profile_")
val data: ProfileDataResponseModel,
val status: Int,
val message: String
)
ProfileData
data class ProfileDataResponseModel(
val uid: Int?,
val name: String?,
val surname: String?,
val position: String?,
val department: String?,
val phone: String?,
val email: String?,
val contacts: String?,
val home: String?,
val password: String?
)
How do I create a converter of my own Object. Let us say I have an User object and I want to add this entity to the database
@entity
data class Users(val orderId: UUID, val orderDate: Date, val manager: Manager, val office: Office) {}
I have the Manager class and the Office class that I want to us a converter, how do I go about that?
Thanks
to use*
For some reason converting kotlin.time.Duration
does not work but java.time.Duration
Are there a generic Converter for enum? Or do we need write specific converter for each enum that used?
@louistsaitszho it's better to have them nullable to handle all use cases.