Room. Составить Entity и Dao по JSON
Нужна помощь в составлении Entity для Room и Dao для insert.
{
"response": [{
"title": "iPhone X",
"value": "120000",
"other": [{
"color": "red",
"type": "phone"
}]
},
{
"title": "iPhone 6",
"value": "120000",
"other": [{
"color": "red",
"type": "phone"
},
{
"color": "green",
"type": "phone"
}
]
}
]
}
open class Converters {
@TypeConverter
fun get_string(str: List<Specialty>): String? {
if (str == null) return null
val others = StringBuilder()
for (s in str) others.append(s).append(",")
return others.toString()
}
}
data class UsersBase(@SerializedName("response") var response: MutableList<Item> = mutableListOf())
@Parcelize
@Entity
data class Item(
@PrimaryKey(autoGenerate = true) var id: Long = 0,
@SerializedName("title") var title: String = "",
@SerializedName("value") var value: String = ""
@TypeConverters(Converters::class)
@SerializedName("other") var other: Array<Other>
) : Parcelable {}
@Parcelize
@Entity(
foreignKeys = [ForeignKey(
entity = Item::class,
parentColumns = arrayOf("id"),
childColumns = arrayOf("itemId"),
onDelete = ForeignKey.CASCADE
)]
)
@TypeConverters(Converters::class)
data class Other(
@PrimaryKey(autoGenerate = true) var id: Long = 0,
@SerializedName("color") var color: String = "",
@SerializedName("type") var type: String = "",
var itemId: Long = 0
) : Parcelable
@Database(entities = [Item::class, Other::class], version = 1)
@TypeConverters(Converters::class)
abstract class AppDatabase : RoomDatabase() {
...
}
//Dao.kt
//Так записываю без List<Other>
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertAll(item: List<Item>): LongArray?