Line data Source code
1 : #include "LoadAllNewsOperation.h"
2 :
3 18 : LoadAllNewsOperation::LoadAllNewsOperation(OperationManager *parent, AllNewsFeedItem *feedItem, LoadMode mode, int loadLimit) :
4 18 : LisvelLoadNewsOperation(parent, feedItem, mode, loadLimit, true)
5 : {
6 18 : }
7 :
8 :
9 18 : qint64 LoadAllNewsOperation::getFirstNewsID()
10 : {
11 18 : const QString queryString = "SELECT id FROM NewsItemTable ORDER BY timestamp ASC, id ASC LIMIT 1";
12 :
13 18 : QSqlQuery query(db());
14 18 : query.prepare(queryString);
15 :
16 18 : if (!query.exec() || !query.next()) {
17 : // No news yet!
18 1 : return -1;
19 : }
20 :
21 17 : return query.value("id").toULongLong();
22 18 : }
23 :
24 14 : QString LoadAllNewsOperation::appendNewQueryString()
25 : {
26 : return "SELECT * FROM NewsItemTable N where id > (SELECT bookmark_id from "
27 28 : "FeedItemTable WHERE id = N.feed_id) AND id NOT IN (" + getLoadedIDString() +
28 28 : ") ORDER BY timestamp ASC, id ASC LIMIT :load_limit";
29 : }
30 :
31 14 : QString LoadAllNewsOperation::prependNewQueryString()
32 : {
33 : return "SELECT * FROM NewsItemTable N where id <= (SELECT bookmark_id from "
34 28 : "FeedItemTable WHERE id = N.feed_id) AND id NOT IN (" + getLoadedIDString() +
35 28 : ") ORDER BY timestamp DESC, id DESC LIMIT :load_limit";
36 : }
37 :
38 3 : QString LoadAllNewsOperation::appendAfterPositionQueryString()
39 : {
40 : // Load items chronologically after a given position, regardless of bookmark.
41 : // Used to reload trimmed items when scrolling back down through read items.
42 : return "SELECT * FROM NewsItemTable N WHERE "
43 : "(timestamp > :last_timestamp OR (timestamp = :last_timestamp AND id > :last_id)) "
44 6 : "AND id NOT IN (" + getLoadedIDString() + ") "
45 6 : "ORDER BY timestamp ASC, id ASC LIMIT :load_limit";
46 : }
|