aboutsummaryrefslogtreecommitdiff
path: root/src/DatabaseStorage.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2018-05-14 22:25:26 +0200
committerdec05eba <dec05eba@protonmail.com>2020-08-18 23:25:46 +0200
commitfa8d14018891d90e23fce0e510a01728970932f2 (patch)
tree723d8d126c87f974598fd865c22c516ea14bd699 /src/DatabaseStorage.cpp
parentc820b10adddc7a229cf2de99937d05a5715d2ab0 (diff)
Implement node load/fetch order
Diffstat (limited to 'src/DatabaseStorage.cpp')
-rw-r--r--src/DatabaseStorage.cpp28
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);