From 77f4ae514eb82ab080345b0d87cfc2a9674e787c Mon Sep 17 00:00:00 2001 From: Yuriy Dupyn <2153100+omedusyo@users.noreply.github.com> Date: Mon, 11 Dec 2023 22:09:26 +0100 Subject: [PATCH] Implement index removal --- src/main.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main.rs b/src/main.rs index 8c4ec20..7c01ff8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -372,12 +372,13 @@ impl Table { fn delete_row_by_id(&mut self, id: UUID) -> usize { if let Some(row) = self.rows.remove(&id) { + let mut something_was_deleted = false; for (column_position, column_index) in &mut self.indexes { if let DbValue::Indexable(value) = &row[*column_position] { - column_index.remove(value, id) + something_was_deleted = something_was_deleted || column_index.remove(value, id); }; } - 1 + if something_was_deleted { 1 } else { 0 } } else { 0 } @@ -522,8 +523,16 @@ impl ColumnIndex { } } - fn remove(&mut self, value: &IndexableDbValue, id: UUID) { - todo!() + fn remove(&mut self, value: &IndexableDbValue, id_to_be_removed: UUID) -> bool { + match self.index.get_mut(value) { + Some(ids) => { + let was_present = ids.remove(&id_to_be_removed); + was_present + }, + None => { + false + } + } } }