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 ");
+ q.bindValue(":title", title);
+
+ ofd = readOpenFileData(q);
+ 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 "
" 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.my_watched IS NULL "
- " AND lower(at.title) = :title "
- " AND fl.path IS NOT NULL "
- "UNION "
- "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 at.title ILIKE :fuzzyTitle "
" AND fl.path IS NOT NULL "
"GROUP BY f.fid, a.title_romaji, e.title_english, e.epno, fl.path, fl.host_id "
"ORDER BY epno ASC ");
- q.bindValue(":title", title);
q.bindValue(":fuzzyTitle", "%" + title + "%");
- return readOpenFileData(q);
+ ofd = readOpenFileData(q);
+
+ return ofd;
}
OpenFileData Database::firstUnwatchedByAid(int aid)
if (epno == 0)
return firstUnwatchedByTitle(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 lower(at.title) = lower(:title) "
+ " AND e.epno = :epno "
+ " AND fl.path IS NOT NULL ");
+ q.bindValue(":title", title);
+ q.bindValue(":epno", epno);
+
+ ofd = readOpenFileData(q);
+ }
+
+ 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 "
" 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) = :title "
- " AND e.epno = :epno "
- " AND fl.path IS NOT NULL "
- "UNION "
- "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 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 ");
- q.bindValue(":title", title);
q.bindValue(":fuzzyTitle", "%" + title + "%");
q.bindValue(":epno", epno);
- return readOpenFileData(q);
+ ofd = readOpenFileData(q);
+
+ return ofd;
}
OpenFileData Database::openFileByEid(int eid)