]> Some of my projects - localmylist.git/commitdiff
Order episodes by the new episode type
authorAPTX <marek321@gmail.com>
Mon, 23 Jul 2012 23:29:15 +0000 (01:29 +0200)
committerAPTX <marek321@gmail.com>
Mon, 23 Jul 2012 23:29:15 +0000 (01:29 +0200)
localmylist/mylistnode.cpp

index dd256c9ccb3ea1c13d366b98976c8fef513d496a..8160f9508c408fa709cf17f8457261189f26448d 100644 (file)
@@ -100,9 +100,19 @@ bool MyListNode::canFetchMore() const
 
 int MyListNode::fetchMore()
 {
-       qDebug() << "fetching some more for root";
        QSqlQuery &q = LocalMyList::instance()->database()->prepare(
-                       "SELECT aid, title_romaji AS title, (SELECT COUNT(e.eid) FROM episode e WHERE e.aid = a.aid), rating, my_vote, (SELECT COUNT(DISTINCT f.eid) FROM episode e  JOIN file f ON (f.eid = e.eid)  WHERE e.aid = a.aid  AND f.my_watched IS NOT NULL) FROM anime a ORDER BY title ASC "
+                       "SELECT aid, title_romaji AS title, "
+                       "               (SELECT COUNT(e.eid) "
+                       "                       FROM episode e "
+                       "                       WHERE e.aid = a.aid), "
+                       "               rating, my_vote, "
+                       "               (SELECT COUNT(DISTINCT f.eid) "
+                       "                       FROM episode e "
+                       "                       JOIN file f ON (f.eid = e.eid) "
+                       "                       WHERE e.aid = a.aid "
+                       "                               AND f.my_watched IS NOT NULL) "
+                       "       FROM anime a "
+                       "       ORDER BY title ASC "
                        "LIMIT :limit "
                        "OFFSET :offset ");
        q.bindValue(":limit", LIMIT);
@@ -164,16 +174,31 @@ QString MyListAnimeNode::totalRowCountSql() const
 int MyListAnimeNode::fetchMore()
 {
        qDebug() << "fetching some more for aid" << m_id;
-       QSqlQuery q(LocalMyList::instance()->database()->connection());
+       QSqlQuery &q = LocalMyList::instance()->database()->prepare(
+       "SELECT e.eid, e.title_english, e.epno, e.rating, e.my_vote, "
+       "               (SELECT MIN(my_watched) "
+       "                       FROM "
+       "                               (SELECT my_watched "
+       "                                       FROM file "
+       "                                       WHERE eid = e.eid "
+       "                                               AND my_watched IS NOT NULL "
+       "                               UNION "
+       "                               SELECT f.my_watched "
+       "                                       FROM file f "
+       "                                       JOIN file_episode_rel fer ON (fer.fid = f.fid) "
+       "                                       WHERE fer.eid = e.eid "
+       "                                               AND my_watched IS NOT NULL) AS sq) AS my_watched "
+       "       FROM episode e "
+       "       JOIN episode_type et ON (et.type = e.type)"
+       "       WHERE e.aid = :aid "
+       "       ORDER BY et.ordering ASC, e.epno ASC "
+       "       LIMIT :limit "
+       "       OFFSET :offset ");
+       q.bindValue(":aid", m_id);
+       q.bindValue(":limit", LIMIT);
+       q.bindValue(":offset", childCount());
 
-       if (!q.exec("SELECT eid, title_english, epno, rating, my_vote, "
-                               "               (SELECT MIN(my_watched) FROM "
-                               "                       (SELECT my_watched FROM file WHERE eid = episode.eid AND my_watched IS NOT NULL "
-                               "                               UNION SELECT f.my_watched FROM file f JOIN file_episode_rel fer ON (fer.fid = f.fid) WHERE fer.eid = episode.eid AND my_watched IS NOT NULL) AS sq) AS my_watched "
-                               "       FROM episode WHERE aid = " + QString::number(m_id)
-                       + " ORDER BY epno ASC "
-                         "LIMIT " + QString::number(LIMIT) + " "
-                         "OFFSET " + QString::number(childCount())))
+       if (!LocalMyList::instance()->database()->exec(q))
                return 0;
 
        while (q.next())