Implement index removal

This commit is contained in:
Yuriy Dupyn 2023-12-11 22:09:26 +01:00
parent 0aa3b28e74
commit 77f4ae514e

View file

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