Как сохранить в базе данных параметр, если он перезаписывается при получении данных с сервера?
hidden добавлен мной, чтобы скрывать посты для пользователя, не удаляя их на сервере. при declineOrder() значение в БД меняется на 1, но не сохраняется при перезагрузке. Как сохранить это значение в базе данных, чтобы при перезагрузке страницы присвоенный true(1) не становился 0 в базе данных? Вот остальной код
data class Order(
@SerializedName("uid")
val uid: String,
@SerializedName("a_point")
val aPoint: String,
val hidden: Boolean = false,)
@Entity(tableName = "orders")
data class OrdersEntity (
@PrimaryKey
val uid: String,
val hidden: Boolean,
val taken: Boolean
) {
fun toDto() = Order(aPoint = aPoint,
uid = uid,
hidden = hidden,
taken = taken)
companion object {
fun fromDto(dto: Order) =
OrdersEntity(
dto.uid,
dto.aPoint ?: "",
dto.hidden
)
}
}
fun List<OrdersEntity>.toDto(): List<Order> = map(OrdersEntity::toDto)
fun List<Order>.toEntity(): List<OrdersEntity> = map { OrdersEntity.fromDto(it) } `
class OrdersRepositoryImpl(
private val dao: OrdersDao,
) : OrdersRepository {
override val data = dao.getAll()
.map(List<OrdersEntity>::toDto)
.flowOn(Dispatchers.Default)
override suspend fun getAll(){
try {
val response = OrdersApiService.service.getAll()
if (!response.isSuccessful) {
throw ApiError(response.code(), response.message())
}
val body = response.body() ?: throw ApiError(response.code(), response.message())
dao.insert(body.toEntity())
} catch (e: IOException) {
throw NetworkError
} catch (e: Exception) {
throw UnknownError
}
}
@Dao
interface OrdersDao {
@Query("SELECT * FROM orders WHERE hidden = 0 ORDER BY uid DESC")
fun getAll(): Flow<List<OrdersEntity>>
@Update
suspend fun update(orders: List<OrdersEntity>)
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insert(orders: List<OrdersEntity>)
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insert(order: OrdersEntity)
@Query("UPDATE orders SET hidden = 1 WHERE uid = :uid")
suspend fun hideOrder(uid: String)```