diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-11-22 14:38:52 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-11-22 14:38:52 +1100 |
| commit | 06aca259cbb84c41a002e5a93735b289cc2aa93a (patch) | |
| tree | 3c3a6c09a7362ab95b0019f4bd4da56faf167187 /src/database/database.cpp | |
| parent | cd46d7bd203b69e6d163fd19e38600d9feae6e56 (diff) | |
| download | tangara-fw-06aca259cbb84c41a002e5a93735b289cc2aa93a.tar.gz | |
Add basic lua browser screen
Diffstat (limited to 'src/database/database.cpp')
| -rw-r--r-- | src/database/database.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/database/database.cpp b/src/database/database.cpp index 88ae7bbe..dad983d0 100644 --- a/src/database/database.cpp +++ b/src/database/database.cpp @@ -846,8 +846,7 @@ auto IndexRecord::Expand(std::size_t page_size) const if (track_) { return {}; } - IndexKey::Header new_header = ExpandHeader(key_.header, key_.item); - std::string new_prefix = EncodeIndexPrefix(new_header); + std::string new_prefix = EncodeIndexPrefix(ExpandHeader()); return Continuation{ .prefix = {new_prefix.data(), new_prefix.size()}, .start_key = {new_prefix.data(), new_prefix.size()}, @@ -857,6 +856,10 @@ auto IndexRecord::Expand(std::size_t page_size) const }; } +auto IndexRecord::ExpandHeader() const -> IndexKey::Header { + return ::database::ExpandHeader(key_.header, key_.item); +} + Iterator::Iterator(std::weak_ptr<Database> db, const IndexInfo& idx) : db_(db), pos_mutex_(), current_pos_(), prev_pos_() { std::string prefix = EncodeIndexPrefix( @@ -887,6 +890,11 @@ auto Iterator::Next(Callback cb) -> void { db->dbGetPage<IndexRecord>(*current_pos_)}; prev_pos_ = current_pos_; current_pos_ = res->next_page(); + if (!res || res->values().empty() || !res->values()[0]) { + ESP_LOGI(kTag, "dropping empty result"); + InvokeNull(cb); + return; + } std::invoke(cb, *res->values()[0]); }); } |
