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 + } + } } }