OpenFileData Database::firstUnwatchedByTitle(const QString &title)
{
QSqlQuery &q = prepare(
- "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path FROM file f "
+ "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 "
" WHERE f.my_watched IS NULL "
" AND lower(at.title) = :title "
" AND fl.path IS NOT NULL "
- " AND fl.host_id = :hostId "
"UNION "
- "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path FROM file f "
+ "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 "
" WHERE f.my_watched IS NULL "
" AND at.title ILIKE :fuzzyTitle "
" AND fl.path IS NOT NULL "
- " AND fl.host_id = :hostId "
- "GROUP BY f.fid, a.title_romaji, e.title_english, e.epno, fl.path "
+ "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 + "%");
- q.bindValue(":hostId", MyList::instance()->hostId());
return readOpenFileData(q);
}
OpenFileData Database::firstUnwatchedByAid(int aid)
{
QSqlQuery &q = prepare(
- "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path FROM file f "
+ "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 f.aid = :aid "
" AND fl.path IS NOT NULL "
- " AND fl.host_id = :hostId "
"ORDER BY e.epno ASC ");
q.bindValue(":aid", aid);
- q.bindValue(":hostId", MyList::instance()->hostId());
return readOpenFileData(q);
}
return firstUnwatchedByTitle(title);
QSqlQuery &q = prepare(
- "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path FROM file f "
+ "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 "
" WHERE lower(at.title) = :title "
" AND e.epno = :epno "
" AND fl.path IS NOT NULL "
- " AND fl.host_id = :hostId "
"UNION "
- "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path FROM file f "
+ "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 "
" WHERE at.title ILIKE :fuzzyTitle "
" AND e.epno = :epno "
" AND fl.path IS NOT NULL "
- " AND fl.host_id = :hostId "
- "GROUP BY f.fid, a.title_romaji, e.title_english, e.epno, fl.path ");
+ "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);
- q.bindValue(":hostId", MyList::instance()->hostId());
return readOpenFileData(q);
}
OpenFileData Database::openFileByEid(int eid)
{
QSqlQuery &q = prepare(
- "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path FROM file f "
+ "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 "
- " AND fl.host_id = :hostId"
" ORDER BY f.version DESC ");
- q.bindValue(":hostId", MyList::instance()->hostId());
q.bindValue(":eid", eid);
return readOpenFileData(q);
OpenFileData Database::openFile(int fid)
{
QSqlQuery &q = prepare(
- "SELECT f.fid, a.title_romaji, e.title_english, e.epno, fl.path FROM file f "
+ "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 "
- " AND fl.host_id = :hostId ");
- q.bindValue(":hostId", MyList::instance()->hostId());
+ " AND fl.path IS NOT NULL ");
q.bindValue(":fid", fid);
return readOpenFileData(q);
return ret;
}
+QList<PathMapping> Database::getMappingsToHost(int hostId)
+{
+ QSqlQuery &q = prepare(
+ "SELECT map_id, source_host, destination_host, source_prefix, destination_prefix "
+ " FROM path_map "
+ " WHERE destination_host = :hostId");
+ q.bindValue(":hostId", hostId);
+
+ QList<PathMapping> ret;
+
+ if (!exec(q))
+ return ret;
+
+ while (q.next())
+ {
+ PathMapping pm;
+ pm.mapId = q.value(0).toInt();
+ pm.sourceHost = q.value(1).toInt();
+ pm.destinationHost = q.value(2).toInt();
+ pm.sourcePrefix = q.value(3).toString();
+ pm.destinationPrefix = q.value(4).toString();
+
+ ret << pm;
+ }
+
+ q.finish();
+
+ return ret;
+}
+
QList<Report> Database::getReports()
{
QList<Report> reports;
if (!exec(q))
return data;
- if (!q.next())
+ while (q.next())
{
- q.finish();
- return data;
- }
+ data.fid = q.value(0).toInt();
+ data.animeTitle = q.value(1).toString();
+ data.episodeTitle = q.value(2).toString();
+ data.epno = q.value(3).toInt();
- data.fid = q.value(0).toInt();
- data.animeTitle = q.value(1).toString();
- data.episodeTitle = q.value(2).toString();
- data.epno = q.value(3).toInt();
- data.path = q.value(4).toString();
+ data.hostId = q.value(5).toInt();
+ data.localPath = q.value(4).toString();
+ data.path = MyList::instance()->mapPath(data.hostId, data.localPath);
+ if (!data.path.isEmpty())
+ break;
+ }
q.finish();
return data;