QSqlQuery addFileEpisodeRelQuery;
QSqlQuery addUnknownFileQuery;
+ QSqlQuery getUnknownFileQuery;
+ QSqlQuery removeUnknownFileQuery;
QSqlQuery addPendingRequestQuery;
QSqlQuery getRequestBatchQuery;
return exec(d->addUnknownFileQuery);
}
+UnknownFile Database::getUnknownFile(const QByteArray &ed2k, qint64 size)
+{
+ d->getUnknownFileQuery.bindValue(":ed2k", ed2k);
+ d->getUnknownFileQuery.bindValue(":size", size);
+
+ if (!exec(d->getUnknownFileQuery))
+ return UnknownFile();
+
+ UnknownFile f;
+
+ if (d->getUnknownFileQuery.next())
+ {
+ f.ed2k = d->getUnknownFileQuery.value(0).toByteArray();
+ f.size = d->getUnknownFileQuery.value(1).toLongLong();
+ f.hostId = d->getUnknownFileQuery.value(2).toInt();
+ f.path = d->getUnknownFileQuery.value(3).toString();
+ }
+ d->getUnknownFileQuery.finish();
+
+ return f;
+}
+
+bool Database::removeUnknownFile(const QByteArray &ed2k, qint64 size)
+{
+ d->removeUnknownFileQuery.bindValue(":ed2k", ed2k);
+ d->removeUnknownFileQuery.bindValue(":size", size);
+
+ return exec(d->removeUnknownFileQuery);
+}
+
bool Database::addRequest(const PendingRequest &request)
{
d->addPendingRequestQuery.bindValue(":aid", request.aid);
request.added = d->getPendingMyListUpdateQuery.value(14).toDateTime();
request.started = d->getPendingMyListUpdateQuery.value(15).toDateTime();
}
+
+ d->getPendingMyListUpdateQuery.finish();
+
return request;
}
"file_episode_rel, file_location, unknown_file");
}
+bool Database::removeKnownUnknownFile(const File &file)
+{
+ UnknownFile uf = getUnknownFile(file.ed2k, file.size);
+
+ if (uf.ed2k.isEmpty())
+ return false;
+
+ removeUnknownFile(file.ed2k, file.size);
+
+ // Can happen if file was added by ed2k&size, not by actual file.
+ if (uf.path.isEmpty())
+ return true;
+
+ FileLocation fl;
+ fl.fid = file.fid;
+ fl.hostId = uf.hostId;
+ fl.path = uf.path;
+
+ addFileLocation(fl);
+
+ return true;
+}
+
bool Database::log(const QString &message, int type)
{
d->addLogQuery.bindValue(":type", type);
d->addUnknownFileQuery = QSqlQuery(d->db);
d->addUnknownFileQuery.prepare("INSERT INTO unknown_file VALUES(:ed2k, :size, :hostId, :path)");
+ d->getUnknownFileQuery = QSqlQuery(d->db);
+ d->getUnknownFileQuery.prepare("SELECT ed2k, size, host_id, path FROM unknown_file WHERE ed2k = :ed2k AND size = :size");
+
+ d->removeUnknownFileQuery = QSqlQuery(d->db);
+ d->removeUnknownFileQuery.prepare("DELETE FROM unknown_file WHERE ed2k = :ed2k AND size = :size");
+
d->addPendingRequestQuery = QSqlQuery(d->db);
d->addPendingRequestQuery.prepare("INSERT INTO pending_request VALUES(:aid, :eid, :fid, :ed2k, :size, DEFAULT, DEFAULT, DEFAULT)");
bool addEpisode(const Episode &episode);
bool addFile(const File &file);
bool addFileEpisodeRel(const FileEpisodeRel &fileEpisodeRel);
+
bool addUnknownFile(const UnknownFile &file);
+ UnknownFile getUnknownFile(const QByteArray &ed2k, qint64 size);
+ bool removeUnknownFile(const QByteArray &ed2k, qint64 size);
bool addRequest(const PendingRequest &request);
QList<PendingRequest> getRequestBatch(int limit = 10);
bool truncateMyListData();
bool truncateDatabase();
+ bool removeKnownUnknownFile(const File &file);
+
bool log(const QString &message, int type = 1);
QSqlDatabase connection() const;