|
@@ -3,10 +3,12 @@ package eu.kanade.mangafeed.data.managers;
|
|
|
import com.pushtorefresh.storio.sqlite.StorIOSQLite;
|
|
|
import com.pushtorefresh.storio.sqlite.operations.put.PutResult;
|
|
|
import com.pushtorefresh.storio.sqlite.queries.Query;
|
|
|
+import com.pushtorefresh.storio.sqlite.queries.RawQuery;
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
import eu.kanade.mangafeed.data.models.Manga;
|
|
|
+import eu.kanade.mangafeed.data.tables.ChaptersTable;
|
|
|
import eu.kanade.mangafeed.data.tables.MangasTable;
|
|
|
import rx.Observable;
|
|
|
|
|
@@ -16,6 +18,18 @@ public class MangaManager extends BaseManager {
|
|
|
super(db);
|
|
|
}
|
|
|
|
|
|
+ private final String mangasWithUnreadQuery = String.format(
|
|
|
+ "SELECT %1$s.*, COUNT(C.%4$s) AS %5$s FROM %1$s LEFT JOIN " +
|
|
|
+ "(SELECT %4$s FROM %2$s WHERE %6$s = 0) AS C ON %3$s = C.%4$s " +
|
|
|
+ "GROUP BY %3$s",
|
|
|
+ MangasTable.TABLE,
|
|
|
+ ChaptersTable.TABLE,
|
|
|
+ MangasTable.TABLE + "." + MangasTable.COLUMN_ID,
|
|
|
+ ChaptersTable.COLUMN_MANGA_ID,
|
|
|
+ MangasTable.COLUMN_UNREAD,
|
|
|
+ ChaptersTable.COLUMN_READ
|
|
|
+ );
|
|
|
+
|
|
|
public Observable<List<Manga>> get() {
|
|
|
return db.get()
|
|
|
.listOfObjects(Manga.class)
|
|
@@ -26,6 +40,17 @@ public class MangaManager extends BaseManager {
|
|
|
.createObservable();
|
|
|
}
|
|
|
|
|
|
+ public Observable<List<Manga>> getWithUnread() {
|
|
|
+ return db.get()
|
|
|
+ .listOfObjects(Manga.class)
|
|
|
+ .withQuery(RawQuery.builder()
|
|
|
+ .query(mangasWithUnreadQuery)
|
|
|
+ .observesTables(MangasTable.TABLE, ChaptersTable.TABLE)
|
|
|
+ .build())
|
|
|
+ .prepare()
|
|
|
+ .createObservable();
|
|
|
+ }
|
|
|
+
|
|
|
public Observable<PutResult> insert(Manga manga) {
|
|
|
return db.put()
|
|
|
.object(manga)
|
|
@@ -34,7 +59,15 @@ public class MangaManager extends BaseManager {
|
|
|
}
|
|
|
|
|
|
public void createDummyManga() {
|
|
|
+ insert(createDummyManga("One Piece")).subscribe();
|
|
|
+ insert(createDummyManga("Übel Blatt")).subscribe();
|
|
|
+ insert(createDummyManga("Berserk")).subscribe();
|
|
|
+ insert(createDummyManga("Horimiya")).subscribe();
|
|
|
+ }
|
|
|
+
|
|
|
+ private Manga createDummyManga(String title) {
|
|
|
Manga m = new Manga();
|
|
|
+ m.title = title;
|
|
|
m.url="http://example.com";
|
|
|
m.artist="Eiichiro Oda";
|
|
|
m.author="Eiichiro Oda";
|
|
@@ -42,8 +75,7 @@ public class MangaManager extends BaseManager {
|
|
|
m.genre="Action, Drama";
|
|
|
m.status="Ongoing";
|
|
|
m.thumbnail_url="http://example.com/pic.png";
|
|
|
- m.title="One Piece";
|
|
|
- insert(m).subscribe();
|
|
|
+ return m;
|
|
|
}
|
|
|
|
|
|
}
|