summaryrefslogtreecommitdiff
path: root/src/tangara/database/database.hpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2024-08-08 12:30:49 +1000
committerjacqueline <me@jacqueline.id.au>2024-08-12 13:20:08 +1000
commitb5dc53670a259c3fdf2d3f20f52880f2218221d7 (patch)
treee90bdca67c8275468609f6922ec688a20b935bb1 /src/tangara/database/database.hpp
parentf8a3c16aad4e55bd19374c5029b4ac606b07dd7d (diff)
downloadtangara-fw-b5dc53670a259c3fdf2d3f20f52880f2218221d7.tar.gz
Derive the next track id from stored track data, instead of tracking it explicitly
This saves about 1ms per new track right now, but more importantly means that minting a new track id is now a single atomic operation, rather than being its own database write. This is a useful property that will come in handy in a few commits time.
Diffstat (limited to 'src/tangara/database/database.hpp')
-rw-r--r--src/tangara/database/database.hpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/tangara/database/database.hpp b/src/tangara/database/database.hpp
index c2e72568..2b385013 100644
--- a/src/tangara/database/database.hpp
+++ b/src/tangara/database/database.hpp
@@ -100,6 +100,7 @@ class Database {
locale::ICollator& collator_;
std::atomic<bool> is_updating_;
+ std::atomic<TrackId> next_track_id_;
Database(leveldb::DB* db,
leveldb::Cache* cache,
@@ -107,6 +108,7 @@ class Database {
ITagParser& tag_parser,
locale::ICollator& collator);
+ auto dbCalculateNextTrackId() -> void;
auto dbMintNewTrackId() -> TrackId;
auto dbEntomb(TrackId track, uint64_t hash) -> void;