return ret;
}
+AnimeTitle Database::myListSearchBestMatch(const QString &query)
+{
+ QList<AnimeTitle> ret = myListSearch(query, 1);
+ if (ret.count())
+ return ret[0];
+ return AnimeTitle();
+}
+
+QList<AnimeTitle> Database::myListSearch(const QString &query, int limit)
+{
+ QList<AnimeTitle> ret;
+
+ QSqlQuery &q = prepare(R"(
+ SELECT at.title_id, at.aid, at.type, at.language, at.title
+ FROM anime_title at
+ AND (SELECT count(f.fid) FROM file f WHERE f.aid = at.aid) > 0
+ ORDER BY at.title <-> :query ASC
+ LIMIT :limit
+)");
+ q.bindValue(":query", query);
+ q.bindValue(":limit", limit);
+
+ if (!exec(q))
+ return ret;
+
+ QSqlResultIterator it(q);
+ while (q.next())
+ {
+ AnimeTitle data;
+ readAnimeTitleData(it, data);
+ ret << data;
+ }
+
+ q.finish();
+
+ return ret;
+}
+
+QList<AnimeTitle> Database::myListSearchSimmilar(const QString &query, int limit)
+{
+ QList<AnimeTitle> ret;
+
+ QSqlQuery &q = prepare(R"(
+ SELECT at.title_id, at.aid, at.type, at.language, at.title
+ FROM anime_title at
+ WHERE (SELECT count(f.fid) FROM file f WHERE f.aid = at.aid) > 0
+ ORDER BY at.title <-> :query ASC
+ LIMIT :limit
+)");
+ q.bindValue(":query", query);
+ q.bindValue(":limit", limit);
+
+ if (!exec(q))
+ return ret;
+
+ QSqlResultIterator it(q);
+ while (q.next())
+ {
+ AnimeTitle data;
+ readAnimeTitleData(it, data);
+ ret << data;
+ }
+
+ q.finish();
+
+ return ret;
+}
+
OpenFileData Database::firstUnwatchedByExactTitle(const QString &title)
{
QSqlQuery &q = prepare(
QList<LocalMyList::AnimeTitle> animeSearch(const QString &query, int limit = 100);
QList<LocalMyList::AnimeTitle> animeSearchSimmilar(const QString &query, int limit = 5);
+ // These are like the animeSearch* versions above but only return results
+ // for which there are entries in your MyList
+ LocalMyList::AnimeTitle myListSearchBestMatch(const QString &query);
+ QList<LocalMyList::AnimeTitle> myListSearch(const QString &query, int limit = 100);
+ QList<LocalMyList::AnimeTitle> myListSearchSimmilar(const QString &query, int limit = 5);
+
+ // Deprectated. Use firstUnwatchedByAid with animeSearch* or myListSearch*.
LocalMyList::OpenFileData firstUnwatchedByExactTitle(const QString &title);
LocalMyList::OpenFileData firstUnwatchedByTitle(const QString &title);
+
LocalMyList::OpenFileData firstUnwatchedByAid(int aid);
+
+ // Deprectated. Use openEpisode with animeSearch* or myListSearch*.
LocalMyList::OpenFileData openFileByTitle(const QString &title, int epno = 0);
LocalMyList::OpenFileData openFileByEid(int eid);
LocalMyList::OpenFileData openFile(int fid);