diff options
author | dec05eba <0xdec05eba@gmail.com> | 2018-05-14 22:25:26 +0200 |
---|---|---|
committer | dec05eba <0xdec05eba@gmail.com> | 2018-05-14 22:25:29 +0200 |
commit | 2260790118358449a18527fcd9e6ff46d2caccf7 (patch) | |
tree | 9bc70e9bedc290ad4f147f5bf8f23e29b40794a0 /src/DatabaseStorage.cpp | |
parent | 7d675a45023e44cfa03d7fa95e4ec20e3a1c2fb9 (diff) |
Implement node load/fetch order
Diffstat (limited to 'src/DatabaseStorage.cpp')
-rw-r--r-- | src/DatabaseStorage.cpp | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/DatabaseStorage.cpp b/src/DatabaseStorage.cpp index 6064ee5..8bef77e 100644 --- a/src/DatabaseStorage.cpp +++ b/src/DatabaseStorage.cpp @@ -215,11 +215,19 @@ namespace odhtdb cleanup(); } - void DatabaseStorage::loadNode(const Hash &nodeHash) + void DatabaseStorage::loadNode(const Hash &nodeHash, DatabaseLoadOrder loadOrder) { + string orderByString; + if(loadOrder == DatabaseLoadOrder::OLDEST_FIRST) + orderByString = " ORDER BY timestamp ASC"; + else if(loadOrder == DatabaseLoadOrder::NEWEST_FIRST) + orderByString = " ORDER BY timestamp DESC"; + if(database->onCreateNodeCallbackFunc) { - SqlQuery nodeQuery(sqliteDb, "SELECT timestamp, creatorPublicKey, adminGroupId From Node WHERE nodeHash = ?", { DataView(nodeHash.getData(), nodeHash.getSize()) }); + string queryStr = "SELECT timestamp, creatorPublicKey, adminGroupId From Node WHERE nodeHash = ?"; + queryStr += orderByString; + SqlQuery nodeQuery(sqliteDb, queryStr.c_str(), { DataView(nodeHash.getData(), nodeHash.getSize()) }); while(nodeQuery.next()) { u64 timestamp = nodeQuery.getInt64(0); @@ -234,7 +242,9 @@ namespace odhtdb } } - SqlQuery nodeQuery(sqliteDb, "SELECT id, requestHash, operation, timestamp, creatorPublicKey From NodeAddData WHERE node = ? AND decrypted = 1", { DataView(nodeHash.getData(), nodeHash.getSize()) }); + string queryStr = "SELECT id, requestHash, operation, timestamp, creatorPublicKey From NodeAddData WHERE node = ? AND decrypted = 1"; + queryStr += orderByString; + SqlQuery nodeQuery(sqliteDb, queryStr.c_str(), { DataView(nodeHash.getData(), nodeHash.getSize()) }); while(nodeQuery.next()) { i64 rowId = nodeQuery.getInt64(0); @@ -732,9 +742,17 @@ namespace odhtdb } } - void DatabaseStorage::fetchNodeAddDataRaw(const Hash &nodeHash, FetchNodeAddDataRawCallbackFunc callbackFunc) + void DatabaseStorage::fetchNodeAddDataRaw(const Hash &nodeHash, FetchNodeAddDataRawCallbackFunc callbackFunc, DatabaseFetchOrder fetchOrder) { - SqlQuery query(sqliteDb, "SELECT rawData.data, nodeAddData.creatorPublicKey, nodeAddData.userActionCounter From NodeAddData AS nodeAddData INNER JOIN NodeAddDataRaw AS rawData ON rawData.nodeAddDataId = nodeAddData.id WHERE nodeAddData.node = ?", { DataView(nodeHash.getData(), nodeHash.getSize()) }); + string orderByString; + if(fetchOrder == DatabaseFetchOrder::OLDEST_FIRST) + orderByString = " ORDER BY nodeAddData.timestamp ASC"; + else if(fetchOrder == DatabaseFetchOrder::NEWEST_FIRST) + orderByString = " ORDER BY nodeAddData.timestamp DESC"; + + string queryStr = "SELECT rawData.data, nodeAddData.creatorPublicKey, nodeAddData.userActionCounter From NodeAddData AS nodeAddData INNER JOIN NodeAddDataRaw AS rawData ON rawData.nodeAddDataId = nodeAddData.id WHERE nodeAddData.node = ?"; + queryStr += orderByString; + SqlQuery query(sqliteDb, queryStr.c_str(), { DataView(nodeHash.getData(), nodeHash.getSize()) }); while(query.next()) { const DataView rawData = query.getBlob(0); |