]> Some of my projects - localmylist.git/commitdiff
Add pixel/version sorting to the other OpenFileData returning methods.
authorAPTX <marek321@gmail.com>
Tue, 7 May 2013 20:44:36 +0000 (22:44 +0200)
committerAPTX <marek321@gmail.com>
Tue, 7 May 2013 20:44:36 +0000 (22:44 +0200)
localmylist/database.cpp

index b2a59340654d760e52e4763164305c3427e87441..7b0d88cb40ccead40e1b9ec3ea5cc5638bcd6cc3 100644 (file)
@@ -172,14 +172,17 @@ OpenFileData Database::openFileByTitle(const QString &title, int epno)
 
        {
                QSqlQuery &q = prepare(
-               "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path, fl.host_id FROM file f "
+               "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path, fl.host_id, "
+               "               CASE WHEN split_part(f.resolution, 'x', 1) = '' OR split_part(f.resolution, 'x', 2) = '' THEN 0 ELSE split_part(f.resolution, 'x', 1)::int * split_part(f.resolution, 'x', 2)::int END pixels "
+               "       FROM file f "
                "       LEFT JOIN anime a ON f.aid = a.aid "
                "       LEFT JOIN anime_title at ON f.aid = at.aid "
                "       LEFT JOIN episode e ON f.eid = e.eid "
                "       LEFT JOIN file_location fl ON fl.fid = f.fid "
                "       WHERE lower(at.title) = lower(:title) "
                "               AND e.epno = :epno "
-               "               AND fl.path IS NOT NULL ");
+               "               AND fl.path IS NOT NULL "
+               "ORDER BY pixels DESC, f.version DESC ");
                q.bindValue(":title", title);
                q.bindValue(":epno", epno);
 
@@ -190,7 +193,9 @@ OpenFileData Database::openFileByTitle(const QString &title, int epno)
                return ofd;
 
        QSqlQuery &q = prepare(
-       "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path, fl.host_id FROM file f "
+       "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path, fl.host_id, "
+       "               CASE WHEN split_part(f.resolution, 'x', 1) = '' OR split_part(f.resolution, 'x', 2) = '' THEN 0 ELSE split_part(f.resolution, 'x', 1)::int * split_part(f.resolution, 'x', 2)::int END pixels "
+       "       FROM file f "
        "       LEFT JOIN anime a ON f.aid = a.aid "
        "       LEFT JOIN anime_title at ON f.aid = at.aid "
        "       LEFT JOIN episode e ON f.eid = e.eid "
@@ -198,7 +203,8 @@ OpenFileData Database::openFileByTitle(const QString &title, int epno)
        "       WHERE at.title ILIKE :fuzzyTitle "
        "               AND e.epno = :epno "
        "               AND fl.path IS NOT NULL "
-       "GROUP BY f.fid, a.title_romaji, e.title_english, e.epno, fl.path, fl.host_id ");
+       "GROUP BY f.fid, a.title_romaji, e.title_english, e.epno, fl.path, fl.host_id "
+       "ORDER BY pixels DESC, f.version DESC ");
        q.bindValue(":fuzzyTitle", "%" + title + "%");
        q.bindValue(":epno", epno);
 
@@ -210,13 +216,15 @@ OpenFileData Database::openFileByTitle(const QString &title, int epno)
 OpenFileData Database::openFileByEid(int eid)
 {
        QSqlQuery &q = prepare(
-               "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path, fl.host_id FROM file f "
-               "       LEFT JOIN anime a ON f.aid = a.aid "
-               "       LEFT JOIN episode e ON f.eid = e.eid "
-               "       LEFT JOIN file_location fl ON fl.fid = f.fid "
-               "       WHERE f.eid = :eid "
-               "               AND fl.path IS NOT NULL "
-               "       ORDER BY f.version DESC ");
+       "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path, fl.host_id, "
+       "               CASE WHEN split_part(f.resolution, 'x', 1) = '' OR split_part(f.resolution, 'x', 2) = '' THEN 0 ELSE split_part(f.resolution, 'x', 1)::int * split_part(f.resolution, 'x', 2)::int END pixels "
+       "       FROM file f "
+       "       LEFT JOIN anime a ON f.aid = a.aid "
+       "       LEFT JOIN episode e ON f.eid = e.eid "
+       "       LEFT JOIN file_location fl ON fl.fid = f.fid "
+       "       WHERE f.eid = :eid "
+       "               AND fl.path IS NOT NULL "
+       "ORDER BY pixels DESC, f.version DESC ");
        q.bindValue(":eid", eid);
 
        return readOpenFileData(q);
@@ -225,12 +233,12 @@ OpenFileData Database::openFileByEid(int eid)
 OpenFileData Database::openFile(int fid)
 {
        QSqlQuery &q = prepare(
-               "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path, fl.host_id FROM file f "
-               "       LEFT JOIN anime a ON f.aid = a.aid "
-               "       LEFT JOIN episode e ON f.eid = e.eid "
-               "       LEFT JOIN file_location fl ON fl.fid = f.fid "
-               "       WHERE f.fid = :fid "
-               "               AND fl.path IS NOT NULL ");
+       "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path, fl.host_id FROM file f "
+       "       LEFT JOIN anime a ON f.aid = a.aid "
+       "       LEFT JOIN episode e ON f.eid = e.eid "
+       "       LEFT JOIN file_location fl ON fl.fid = f.fid "
+       "       WHERE f.fid = :fid "
+       "               AND fl.path IS NOT NULL ");
        q.bindValue(":fid", fid);
 
        return readOpenFileData(q);