Skip to content

Commit

Permalink
Fix delete and delete all for unmanaged objects - add method to getBy…
Browse files Browse the repository at this point in the history
…Id for integer
  • Loading branch information
tspoke committed Apr 26, 2017
1 parent 386833c commit 3f69ce2
Showing 1 changed file with 35 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,15 @@ public Observable<T> getById(String id) {
return getOne(new Filter("id", id), null);
}

/**
* Get one by id
* @param id
* @return
*/
public Observable<T> getById(int id) {
return getOne(new Filter("id", id), null);
}

/**
* Get all for a specific filters
* @return
Expand Down Expand Up @@ -109,40 +118,57 @@ public final Observable<T> insertOrUpdate(T object) {

/**
* Insert or update all
* @param items
* @param objects
* @return List of item copied from realm
*/
@Override
public final Observable<List<T>> insertOrUpdate(List<T> items) {
public final Observable<List<T>> insertOrUpdate(List<T> objects) {
final Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
items = realm.copyToRealmOrUpdate(items);
objects = realm.copyToRealmOrUpdate(objects);
realm.commitTransaction();
List<T> copies = realm.copyFromRealm(items);
List<T> copies = realm.copyFromRealm(objects);
realm.close();

return Observable.just(copies);
}

/**
* Remove only these items
* @param items
* @param objects
* @return List of item copied from realm
*/
@Override
public final Observable<Void> delete(List<T> items) {
for(T elem : items) {
if(elem.isManaged()) {
elem.deleteFromRealm(); // potentially slow
public final Observable<Void> delete(List<T> objects) {
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();

for(T obj : objects) {
if(obj.isManaged()) {
obj.deleteFromRealm(); // potentially slow
} else {
T managedObject = realm.copyToRealmOrUpdate(obj);
managedObject.deleteFromRealm();
}
}

realm.commitTransaction();
realm.close();

return Observable.just(null);
}

@Override
public final Observable<Void> delete(T object) {
if(object.isManaged()) {
object.deleteFromRealm();
} else {
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
T managedObject = realm.copyToRealmOrUpdate(object);
managedObject.deleteFromRealm();
realm.commitTransaction();
realm.close();
}
return Observable.just(null);
}
Expand Down

0 comments on commit 3f69ce2

Please sign in to comment.