mirror of
https://github.com/natsukagami/youmubot.git
synced 2025-04-20 01:08:55 +00:00
Fix concurrency overwrite
This commit is contained in:
parent
f05afb2b80
commit
61a71b819c
1 changed files with 10 additions and 1 deletions
|
@ -95,7 +95,16 @@ impl youmubot_prelude::Announcer for Announcer {
|
|||
.collect::<HashMap<_, _>>()
|
||||
.await;
|
||||
// Update users
|
||||
*OsuSavedUsers::open(&*d.read().await).borrow_mut()? = data;
|
||||
let db = &*d.read().await;
|
||||
let mut db = OsuSavedUsers::open(db);
|
||||
let mut db = db.borrow_mut()?;
|
||||
data.into_iter()
|
||||
.for_each(|(k, v)| match db.get(&k).map(|v| v.last_update.clone()) {
|
||||
Some(d) if d > v.last_update => (),
|
||||
_ => {
|
||||
db.insert(k, v);
|
||||
}
|
||||
});
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue