serialize_workspace.rs

 1use std::{fs::File, path::Path, thread::sleep, time::Duration};
 2
 3const TEST_FILE: &'static str = "test-db.db";
 4
 5fn main() -> anyhow::Result<()> {
 6    let db = db::Db::open_in_memory();
 7    if db.real().is_none() {
 8        return Err(anyhow::anyhow!("Migrations failed"));
 9    }
10    let file = Path::new(TEST_FILE);
11
12    let f = File::create(file)?;
13    drop(f);
14
15    db.write_kvp("test", "1")?;
16    db.write_kvp("test-2", "2")?;
17
18    let workspace_1 = db.workspace_for_worktree_roots(&[]);
19    let workspace_2 = db.workspace_for_worktree_roots(&[]);
20    let workspace_3 = db.workspace_for_worktree_roots(&[]);
21    let workspace_4 = db.workspace_for_worktree_roots(&[]);
22    let workspace_5 = db.workspace_for_worktree_roots(&[]);
23    let workspace_6 = db.workspace_for_worktree_roots(&[]);
24    let workspace_7 = db.workspace_for_worktree_roots(&[]);
25
26    // Order scrambled + sleeps added because sqlite only has 1 second resolution on
27    // their timestamps
28    db.update_worktree_roots(&workspace_7.workspace_id, &["/tmp2"])
29        .unwrap();
30    sleep(Duration::from_secs(1));
31    db.update_worktree_roots(&workspace_1.workspace_id, &["/tmp1"])
32        .unwrap();
33    sleep(Duration::from_secs(1));
34    db.update_worktree_roots(&workspace_2.workspace_id, &["/tmp1", "/tmp2"])
35        .unwrap();
36    sleep(Duration::from_secs(1));
37    db.update_worktree_roots(&workspace_3.workspace_id, &["/tmp1", "/tmp2", "/tmp3"])
38        .unwrap();
39    sleep(Duration::from_secs(1));
40    db.update_worktree_roots(&workspace_4.workspace_id, &["/tmp2", "/tmp3"])
41        .unwrap();
42    sleep(Duration::from_secs(1));
43    db.update_worktree_roots(&workspace_5.workspace_id, &["/tmp2", "/tmp3", "/tmp4"])
44        .unwrap();
45    sleep(Duration::from_secs(1));
46    db.update_worktree_roots(&workspace_6.workspace_id, &["/tmp2", "/tmp4"])
47        .unwrap();
48
49    db.write_to(file).ok();
50
51    println!("Wrote database!");
52
53    Ok(())
54}