diff options
| author | jacqueline <me@jacqueline.id.au> | 2024-08-08 12:30:49 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2024-08-12 13:20:08 +1000 |
| commit | b5dc53670a259c3fdf2d3f20f52880f2218221d7 (patch) | |
| tree | e90bdca67c8275468609f6922ec688a20b935bb1 /src/tangara/database/database.hpp | |
| parent | f8a3c16aad4e55bd19374c5029b4ac606b07dd7d (diff) | |
| download | tangara-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.hpp | 2 |
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; |
