-
-
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 | |
} | |
} |
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?
Please go into detail.