| 60 | |
| 61 | impl Repository<UserKey, User, VirtualMemory<Memory>> for UserRepository { |
| 62 | fn insert(&self, key: UserKey, value: User) -> Option<User> { |
| 63 | DB.with(|m| { |
| 64 | let prev = m.borrow_mut().insert(key, value.clone()); |
| 65 | |
| 66 | // Update metrics when a user is upserted. |
| 67 | USER_METRICS.with(|metrics| { |
| 68 | metrics |
| 69 | .iter() |
| 70 | .for_each(|metric| metric.borrow_mut().sum(&value, prev.as_ref())) |
| 71 | }); |
| 72 | |
| 73 | self.save_entry_indexes(&value, prev.as_ref()); |
| 74 | |
| 75 | prev |
| 76 | }) |
| 77 | } |
| 78 | |
| 79 | fn remove(&self, key: &UserKey) -> Option<User> { |
| 80 | DB.with(|m| { |