summaryrefslogtreecommitdiff
path: root/src/tangara/database/records.cpp
diff options
context:
space:
mode:
authorcooljqln <cooljqln@noreply.codeberg.org>2024-09-19 04:44:16 +0000
committercooljqln <cooljqln@noreply.codeberg.org>2024-09-19 04:44:16 +0000
commit1eddfe97d9398215d4512785c669cf7cc94b6223 (patch)
tree6b7223e9c0e677705ec3ccfd5846f8fe0cdebeb1 /src/tangara/database/records.cpp
parent9aa77ec5ad369cd7d5ca46d475df29d971416a73 (diff)
parent7f43d4d1265ce7f456b36f51987c812d35bcd616 (diff)
downloadtangara-fw-1eddfe97d9398215d4512785c669cf7cc94b6223.tar.gz
Merge pull request 'daniel/persistent-positions' (#104) from daniel/persistent-positions into main
Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/104 Reviewed-by: cooljqln <cooljqln@noreply.codeberg.org>
Diffstat (limited to 'src/tangara/database/records.cpp')
-rw-r--r--src/tangara/database/records.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/tangara/database/records.cpp b/src/tangara/database/records.cpp
index 17009cd8..012cda64 100644
--- a/src/tangara/database/records.cpp
+++ b/src/tangara/database/records.cpp
@@ -93,6 +93,7 @@ auto EncodeDataValue(const TrackData& track) -> std::string {
cppbor::Uint{track.modified_at.first},
cppbor::Uint{track.modified_at.second},
tag_hashes,
+ cppbor::Uint{track.last_position},
};
return val.toString();
}
@@ -104,13 +105,14 @@ auto ParseDataValue(const leveldb::Slice& slice) -> std::shared_ptr<TrackData> {
return nullptr;
}
auto vals = item->asArray();
- if (vals->size() != 7 || vals->get(0)->type() != cppbor::UINT ||
+ if (vals->size() != 8 || vals->get(0)->type() != cppbor::UINT ||
vals->get(1)->type() != cppbor::TSTR ||
vals->get(2)->type() != cppbor::UINT ||
vals->get(3)->type() != cppbor::SIMPLE ||
vals->get(4)->type() != cppbor::UINT ||
vals->get(5)->type() != cppbor::UINT ||
- vals->get(6)->type() != cppbor::MAP) {
+ vals->get(6)->type() != cppbor::MAP ||
+ vals->get(7)->type() != cppbor::UINT) {
return {};
}
auto res = std::make_shared<TrackData>();
@@ -127,6 +129,9 @@ auto ParseDataValue(const leveldb::Slice& slice) -> std::shared_ptr<TrackData> {
auto tag = static_cast<Tag>(entry.first->asUint()->unsignedValue());
res->individual_tag_hashes[tag] = entry.second->asUint()->unsignedValue();
}
+
+ res->last_position = vals->get(7)->asUint()->unsignedValue();
+
return res;
}