mi escenario
Uso Coroutines y Room para guardar los datos del perfil de usuario de mi aplicación. Tengo CompleteProfileActivity: en ese Usuario complete su información y confirme (botón Confirmar). Los envío al servidor y observo la respuesta. Si la respuesta es el éxito. Los guardo en mi ProfileDatabase.
Mi pregunta ¿Cómo puedo saber si mi base de datos está actualizada o mi inserción está completa, mi eliminación no está completa al obtener el tamaño? @Insert @Delete es un método de devolución nulo. Entonces, ¿cómo puedo saber, excepto el tamaño de la base de datos?
@Dao interface ProfileDao { @Insert(onConflict = OnConflictStrategy.IGNORE) fun saveProfile(model:Profile) @Query("SELECT * FROM profile_table") fun getProfile():Deferred<Profile> }
Si la llamada al método tuvo éxito para la inserción, entonces tuvo éxito; de lo contrario, obtendría una excepción.
Además, estos no tienen que ser métodos de retorno de vacío.
Puede hacer que @Insert
devuelva el tipo de clave principal en la tabla, que será la clave del registro recién insertado.
@Insert(onConflict = OnConflictStrategy.IGNORE) fun saveProfile(model: Profile): Int
En el caso de @Delete
, devolverá el número de filas eliminadas si devuelve un Int
:
@Delete fun deleteProfiles(profiles: List<Profile>): Int
Lo mismo ocurre con una implementación más manual usando @Query
, devuelve el número de filas afectadas si devuelve un Int
:
@Query("DELETE FROM profiles") fun deleteAllProfiles(): Int