LibWeb/IDB: Implement storing of index records

This commit is contained in:
stelar7 2025-05-13 23:06:42 +02:00 committed by Jelle Raaijmakers
commit 46ecf239c4
Notes: github-actions[bot] 2025-05-14 15:18:57 +00:00
3 changed files with 34 additions and 2 deletions

View file

@ -4,6 +4,7 @@
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <AK/QuickSort.h>
#include <LibWeb/IndexedDB/Internal/Index.h>
#include <LibWeb/IndexedDB/Internal/ObjectStore.h>
@ -107,4 +108,18 @@ u64 Index::count_records_in_range(GC::Ref<IDBKeyRange> range)
return count;
}
void Index::store_a_record(IndexRecord const& record)
{
m_records.append(record);
// NOTE: The record is stored in indexs list of records such that the list is sorted primarily on the records keys, and secondarily on the records values, in ascending order.
AK::quick_sort(m_records, [](auto const& a, auto const& b) {
auto key_comparison = Key::compare_two_keys(a.key, b.key);
if (key_comparison != 0)
return key_comparison < 0;
return Key::compare_two_keys(a.value, b.value) < 0;
});
}
}