diff options
Diffstat (limited to 'src/database/include/records.hpp')
| -rw-r--r-- | src/database/include/records.hpp | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/src/database/include/records.hpp b/src/database/include/records.hpp index 95a1a1e8..58f29b20 100644 --- a/src/database/include/records.hpp +++ b/src/database/include/records.hpp @@ -9,10 +9,14 @@ #include <stdint.h> #include <string> +#include <variant> +#include <vector> #include "leveldb/db.h" #include "leveldb/slice.h" +#include "index.hpp" +#include "shared_string.h" #include "track.hpp" namespace database { @@ -34,39 +38,49 @@ class OwningSlice { * Returns the prefix added to every TrackData key. This can be used to iterate * over every data record in the database. */ -auto CreateDataPrefix() -> OwningSlice; +auto EncodeDataPrefix() -> OwningSlice; -/* Creates a data key for a track with the specified id. */ -auto CreateDataKey(const TrackId& id) -> OwningSlice; +/* Encodes a data key for a track with the specified id. */ +auto EncodeDataKey(const TrackId& id) -> OwningSlice; /* * Encodes a TrackData instance into bytes, in preparation for storing it within * the database. This encoding is consistent, and will remain stable over time. */ -auto CreateDataValue(const TrackData& track) -> OwningSlice; +auto EncodeDataValue(const TrackData& track) -> OwningSlice; /* - * Parses bytes previously encoded via CreateDataValue back into a TrackData. + * Parses bytes previously encoded via EncodeDataValue back into a TrackData. * May return nullopt if parsing fails. */ auto ParseDataValue(const leveldb::Slice& slice) -> std::optional<TrackData>; -/* Creates a hash key for the specified hash. */ -auto CreateHashKey(const uint64_t& hash) -> OwningSlice; +/* Encodes a hash key for the specified hash. */ +auto EncodeHashKey(const uint64_t& hash) -> OwningSlice; /* * Encodes a hash value (at this point just a track id) into bytes, in * preparation for storing within the database. This encoding is consistent, and * will remain stable over time. */ -auto CreateHashValue(TrackId id) -> OwningSlice; +auto EncodeHashValue(TrackId id) -> OwningSlice; /* - * Parses bytes previously encoded via CreateHashValue back into a track id. May + * Parses bytes previously encoded via EncodeHashValue back into a track id. May * return nullopt if parsing fails. */ auto ParseHashValue(const leveldb::Slice&) -> std::optional<TrackId>; +/* Encodes a prefix that matches all index keys, of all ids and depths. */ +auto EncodeAllIndexesPrefix() -> OwningSlice; + +/* + */ +auto EncodeIndexPrefix(const IndexKey::Header&) -> OwningSlice; + +auto EncodeIndexKey(const IndexKey&) -> OwningSlice; +auto ParseIndexKey(const leveldb::Slice&) -> std::optional<IndexKey>; + /* Encodes a TrackId as bytes. */ auto TrackIdToBytes(TrackId id) -> OwningSlice; |
