feat: migration canonicalize problems
This commit is contained in:
parent
b37386b9e8
commit
e5853268de
@ -13,6 +13,43 @@ pub async fn run_migrations(db: &Database) -> Result<(), Box<dyn std::error::Err
|
||||
if is_at_version(db, 3).await? {
|
||||
migrate_to_v4(db).await?;
|
||||
}
|
||||
if is_at_version(db, 4).await? {
|
||||
canonicalize_all_problems(db).await?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn canonicalize_all_problems(db: &Database) -> Result<(), Box<dyn std::error::Error>> {
|
||||
tracing::warn!("CANONICALIZING ALL PROBLEMS");
|
||||
|
||||
db.write(|txn| {
|
||||
let mut walls_table = txn.open_table(db::v4::TABLE_WALLS)?;
|
||||
|
||||
let walls_dump = walls_table
|
||||
.iter()?
|
||||
.map(|el| {
|
||||
let (k, v) = el.unwrap();
|
||||
(k.value(), v.value())
|
||||
})
|
||||
.collect::<BTreeMap<_, _>>();
|
||||
|
||||
for (wall_uid, mut wall) in walls_dump.into_iter() {
|
||||
wall.problems = wall
|
||||
.problems
|
||||
.into_iter()
|
||||
.map(|mut problem| {
|
||||
problem.pattern = problem.pattern.canonicalize();
|
||||
problem
|
||||
})
|
||||
.collect();
|
||||
|
||||
walls_table.insert(wall_uid, wall)?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
})
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user