From: APTX Date: Sun, 21 Apr 2013 15:07:31 +0000 (+0200) Subject: Add a firstUnwatchedByExactTitle method. X-Git-Url: https://gitweb.aptx.org/?a=commitdiff_plain;h=ce4f7474e7585e6733965ba9585fcbff2079ea4c;p=localmylist.git Add a firstUnwatchedByExactTitle method. firstUnwatchedByTitle now calls firstUnwatchedByExactTitle to check for an exact title before trying a partial match. --- diff --git a/localmylist/database.cpp b/localmylist/database.cpp index 37a3ea8..5fe69e8 100644 --- a/localmylist/database.cpp +++ b/localmylist/database.cpp @@ -85,28 +85,32 @@ qDebug() << "Commit Error:" << d->db.lastError(); return false; } +OpenFileData Database::firstUnwatchedByExactTitle(const QString &title) +{ + 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 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 f.my_watched IS NULL " + " AND lower(at.title) = lower(:title) " + " AND fl.path IS NOT NULL " + " AND NOT EXISTS (SELECT 1 FROM file WHERE eid = e.eid AND my_watched IS NOT NULL LIMIT 1) " + "ORDER BY epno ASC "); + q.bindValue(":title", title); + + return readOpenFileData(q); +} + OpenFileData Database::firstUnwatchedByTitle(const QString &title) { OpenFileData ofd; - { - 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 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 f.my_watched IS NULL " - " AND lower(at.title) = lower(:title) " - " AND fl.path IS NOT NULL " - " AND NOT EXISTS (SELECT 1 FROM file WHERE eid = e.eid AND my_watched IS NOT NULL LIMIT 1) " - "ORDER BY epno ASC "); - q.bindValue(":title", title); + ofd = firstUnwatchedByExactTitle(title); - ofd = readOpenFileData(q); - if (ofd.fid) - return ofd; - } + if (ofd.fid) + return ofd; QSqlQuery &q = prepare( "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path, fl.host_id FROM file f " diff --git a/localmylist/database.h b/localmylist/database.h index 4d8b4a8..227fab5 100644 --- a/localmylist/database.h +++ b/localmylist/database.h @@ -47,6 +47,7 @@ public slots: bool commit(); bool rollback(); + LocalMyList::OpenFileData firstUnwatchedByExactTitle(const QString &title); LocalMyList::OpenFileData firstUnwatchedByTitle(const QString &title); LocalMyList::OpenFileData firstUnwatchedByAid(int aid); LocalMyList::OpenFileData openFileByTitle(const QString &title, int epno = 0);