Get chapter list
This commit is contained in:
@@ -1,7 +1,11 @@
|
||||
package eu.kanade.mangafeed.data.managers;
|
||||
|
||||
import com.pushtorefresh.storio.sqlite.StorIOSQLite;
|
||||
import com.pushtorefresh.storio.sqlite.operations.delete.DeleteResult;
|
||||
import com.pushtorefresh.storio.sqlite.operations.delete.DeleteResults;
|
||||
import com.pushtorefresh.storio.sqlite.operations.get.PreparedGetListOfObjects;
|
||||
import com.pushtorefresh.storio.sqlite.operations.put.PutResult;
|
||||
import com.pushtorefresh.storio.sqlite.operations.put.PutResults;
|
||||
import com.pushtorefresh.storio.sqlite.queries.Query;
|
||||
|
||||
import java.util.List;
|
||||
@@ -17,7 +21,7 @@ public class ChapterManager extends BaseManager {
|
||||
super(db);
|
||||
}
|
||||
|
||||
public Observable<List<Chapter>> get(Manga manga) {
|
||||
private PreparedGetListOfObjects<Chapter> prepareGet(Manga manga) {
|
||||
return db.get()
|
||||
.listOfObjects(Chapter.class)
|
||||
.withQuery(Query.builder()
|
||||
@@ -25,8 +29,11 @@ public class ChapterManager extends BaseManager {
|
||||
.where(ChaptersTable.COLUMN_MANGA_ID + "=?")
|
||||
.whereArgs(manga.id)
|
||||
.build())
|
||||
.prepare()
|
||||
.createObservable();
|
||||
.prepare();
|
||||
}
|
||||
|
||||
public Observable<List<Chapter>> get(Manga manga) {
|
||||
return prepareGet(manga).createObservable();
|
||||
}
|
||||
|
||||
public Observable<PutResult> insert(Chapter chapter) {
|
||||
@@ -36,16 +43,66 @@ public class ChapterManager extends BaseManager {
|
||||
.createObservable();
|
||||
}
|
||||
|
||||
public Observable<PutResults<Chapter>> insert(List<Chapter> chapters) {
|
||||
return db.put()
|
||||
.objects(chapters)
|
||||
.prepare()
|
||||
.createObservable();
|
||||
}
|
||||
|
||||
// Add new chapters or delete if the source deletes them
|
||||
public Observable insertOrRemove(Manga manga, List<Chapter> chapters) {
|
||||
// I don't know a better approach
|
||||
return Observable.create(subscriber -> {
|
||||
List<Chapter> dbGet = prepareGet(manga).executeAsBlocking();
|
||||
|
||||
Observable.just(dbGet)
|
||||
.doOnNext(dbChapters -> {
|
||||
Observable.from(chapters)
|
||||
.filter(c -> !dbChapters.contains(c))
|
||||
.toList()
|
||||
.subscribe(newChapters -> {
|
||||
if (newChapters.size() > 0)
|
||||
insert(newChapters).subscribe();
|
||||
});
|
||||
})
|
||||
.flatMap(Observable::from)
|
||||
.filter(c -> !chapters.contains(c))
|
||||
.toList()
|
||||
.subscribe(removedChapters -> {
|
||||
if (removedChapters.size() > 0)
|
||||
delete(removedChapters).subscribe();
|
||||
subscriber.onCompleted();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public void createDummyChapters() {
|
||||
Chapter c;
|
||||
|
||||
for (int i = 1; i < 100; i++) {
|
||||
c = new Chapter();
|
||||
c.manga_id = 1;
|
||||
c.manga_id = 1L;
|
||||
c.name = "Chapter " + i;
|
||||
c.url = "http://example.com/1";
|
||||
insert(c).subscribe();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public Observable<DeleteResults<Chapter>> delete(List<Chapter> chapters) {
|
||||
return db.delete()
|
||||
.objects(chapters)
|
||||
.prepare()
|
||||
.createObservable();
|
||||
}
|
||||
|
||||
public Observable<DeleteResult> delete(Chapter chapter) {
|
||||
return db.delete()
|
||||
.object(chapter)
|
||||
.prepare()
|
||||
.createObservable();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user