Я пытаюсь создать общий объект первичного ключа в комнате Android. Я использую котлин. Я посмотрел, как создать универсальный для него. К сожалению, я не нашел лучших практических решений, которые продемонстрировали бы пример универсального вашего первичного ключа в комнате дао. Я не знаю, зачем улучшать мой код, я был бы признателен за помощь.
interface RxLocalDb<T : Model, K> : LocalDb {
// Basic functions, no need to override
@Insert(onConflict = REPLACE)
fun save(vararg response: T)
@Update
fun update(vararg response: T)
@Delete
fun remove(vararg response: T)
// Override this method to comply each class needs
fun get(id: K): Single<T>
fun getList(): Single<List<T>>
fun remove(id: K)
fun removeAll()
fun isItemCached(id: K, strId: String? = ""): Single<Boolean>
fun isItemCacheExpired(id: K, strId: String? = ""): Single<Boolean>
fun isCached(): Single<Boolean>
fun isCacheExpired(): Single<Boolean>
}```
@ Dao abstract class AboutDao: RxLocalDb {
@Query("SELECT * FROM about WHERE id = :intId")
abstract override fun get(id: Long): Single<AboutItem>
@Query("SELECT * FROM about")
abstract override fun getList(): Single<List<AboutItem>>
@Query("DELETE FROM about WHERE id = :id")
abstract override fun remove(id: Long)
@Query("DELETE FROM about")
abstract override fun removeAll()
override fun isCached(): Single<Boolean> {
return getList().subscribeOn(Schedulers.io()).map { !it.isEmpty() }
}
override fun isCacheExpired(): Single<Boolean> {
return Single.just(false)
}
override fun isItemCached(id: Long, strId: String?): Single<Boolean> {
return Single.just(false)
}
override fun isItemCacheExpired(id: Long, strId: String?): Single<Boolean> {
return Single.just(true)
}
}
and this is the error message when i am trying to build project
"e: error: An abstract DAO method must be annotated with one and only one of the following annotations: Insert,Delete,Query,Update,RawQuery - get(K) in com.nbs.nucleo.data.RxLocalDb
"