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 {
|
fn delete_row_by_id(&mut self, id: UUID) -> usize {
|
||||||
if let Some(row) = self.rows.remove(&id) {
|
if let Some(row) = self.rows.remove(&id) {
|
||||||
|
let mut something_was_deleted = false;
|
||||||
for (column_position, column_index) in &mut self.indexes {
|
for (column_position, column_index) in &mut self.indexes {
|
||||||
if let DbValue::Indexable(value) = &row[*column_position] {
|
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 {
|
} else {
|
||||||
0
|
0
|
||||||
}
|
}
|
||||||
|
|
@ -522,8 +523,16 @@ impl ColumnIndex {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn remove(&mut self, value: &IndexableDbValue, id: UUID) {
|
fn remove(&mut self, value: &IndexableDbValue, id_to_be_removed: UUID) -> bool {
|
||||||
todo!()
|
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