objectbox / objectbox/objectbox-java
Enable DataObserver to observe T?, not only List<T>
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Java
- Estrellas
- 4.6k
- Forks
- 311
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
I came across the DataObservers today and noticed, that when you call subscribe on a Query<T>, you will end in a List<T> as result which in my opinion is not what you want, e.g. if you want to find an entity by its id BUT also want to track the changes of this object, you would normally do this: boxStore.boxFor(T::class.java).query {}.findFirst() which would result in a T? result type. Now when i also want to track changes here, i wrap it in a flow (i use kotlin) like this:
@ExperimentalCoroutinesApi
fun <T> Query<T>.asFlow() = callbackFlow {
val subscription =
this@asFlow.subscribe()
.onError { cancel("Database error", it) }
.observer { data -> offer(data) }
awaitClose { subscription.cancel() }
}
Suddenly i have to deal with a List<T> due to the fact, that the SubscriptionBuilder returns a SubscriptionBuilder<List<T>>.
Please add a more precise way to differ between single and multiple values. Currently i need to implement workarounds for this, but that should be a standard behaviour
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Empieza con Query.subscribe, DataObserver y SubscriptionBuilder para entender por qué las suscripciones actualmente exponen resultados de tipo List; después, compara ese comportamiento con Query.findFirst() y el ejemplo de Kotlin asFlow. Se considera terminado cuando se proporcione una forma documentada de observar un único T nullable, preservando al mismo tiempo el comportamiento existente de observación de múltiples resultados.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java, kotlin
- Área
- database
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 38/100