Me mudé de sql db a room. No puedo averiguar cómo verificar si el elemento existe en la base de datos. ¿Cómo escribir este código usando Room?
fun existsCheck(place: Places): Boolean { val db= this.readableDatabase val query = "SELECT * FROM $TABLE_PLACES WHERE $COLUMN_LAT = ${place.lat} AND $COLUMN_LNG = ${place.lng}" val cursor = db.rawQuery(query, null) if(cursor.count > 0){ cursor.close() db.close() return true } cursor.close() db.close() return false }He intentado lograr esto con este código, pero siempre obtengo FALSO
@Query("SELECT name FROM place WHERE lat = :lat AND lng = :lng") fun exist(lat: Double?, lng: Double?): Flowable<String> override fun save() { Observable.just(dao) .subscribeOn(Schedulers.io()) .subscribe { dao.insert(place) } } override fun itemExists(lat: Double?, lng: Double?): Single<Boolean> = dao.exist(lat, lng) .flatMapSingle { Single.just(it.isNotEmpty()) } .onErrorReturn { false } .first(false) override fun delete() { dao.deleteByLat(place.lat) } override fun saveClicked() { var boolean = false itemExists(place.lat, place.lng) .subscribeOn(Schedulers.io()) .map { it -> boolean = it } if (boolean){ delete() v.setImageNotSaved() } else { save() v.setImageSaved() } }esto funciona bien
override fun itemExists() { Observable.just(dao) .subscribeOn(Schedulers.io()) .subscribeOn(AndroidSchedulers.mainThread()) .map { it -> it.exist(place.lat, place.lng) } .subscribe( { it -> saveClicked(true) }, {error -> saveClicked(false)}) }