Implement index removal
This commit is contained in:
parent
0aa3b28e74
commit
77f4ae514e
1 changed files with 13 additions and 4 deletions
17
src/main.rs
17
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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue