summaryrefslogtreecommitdiff
path: root/src/tangara/database/database.hpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2024-08-08 14:35:53 +1000
committerjacqueline <me@jacqueline.id.au>2024-08-12 13:20:08 +1000
commit30aaefca64445efa421edb93403036d59382920f (patch)
tree18c06cdf0ad23493350dcbb1f611d0fad759917d /src/tangara/database/database.hpp
parentb5dc53670a259c3fdf2d3f20f52880f2218221d7 (diff)
downloadtangara-fw-30aaefca64445efa421edb93403036d59382920f.tar.gz
Batch up the db operations associated with adding new tracks
This is ostensibly yet another 'prepare for multithreaded updates' commit, however it does actually save us another 60(!!) odd milliseconds per track.
Diffstat (limited to 'src/tangara/database/database.hpp')
-rw-r--r--src/tangara/database/database.hpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/tangara/database/database.hpp b/src/tangara/database/database.hpp
index 2b385013..39665dbf 100644
--- a/src/tangara/database/database.hpp
+++ b/src/tangara/database/database.hpp
@@ -29,6 +29,7 @@
#include "leveldb/iterator.h"
#include "leveldb/options.h"
#include "leveldb/slice.h"
+#include "leveldb/write_batch.h"
#include "memory_resource.hpp"
#include "result.hpp"
#include "tasks.hpp"
@@ -111,17 +112,18 @@ class Database {
auto dbCalculateNextTrackId() -> void;
auto dbMintNewTrackId() -> TrackId;
- auto dbEntomb(TrackId track, uint64_t hash) -> void;
- auto dbPutTrackData(const TrackData& s) -> void;
auto dbGetTrackData(TrackId id) -> std::shared_ptr<TrackData>;
- auto dbPutHash(const uint64_t& hash, TrackId i) -> void;
- auto dbGetHash(const uint64_t& hash) -> std::optional<TrackId>;
- auto dbCreateIndexesForTrack(const Track& track) -> void;
+ auto dbCreateIndexesForTrack(const Track&, leveldb::WriteBatch&) -> void;
+ auto dbCreateIndexesForTrack(const TrackData&,
+ const TrackTags&,
+ leveldb::WriteBatch&) -> void;
+
auto dbRemoveIndexes(std::shared_ptr<TrackData>) -> void;
auto dbIngestTagHashes(const TrackTags&,
- std::pmr::unordered_map<Tag, uint64_t>&) -> void;
+ std::pmr::unordered_map<Tag, uint64_t>&,
+ leveldb::WriteBatch&) -> void;
auto dbRecoverTagsFromHashes(const std::pmr::unordered_map<Tag, uint64_t>&)
-> std::shared_ptr<TrackTags>;