Skip to content

Commit a3c2ced

Browse files
committed
prefactor: move v1->v2 migration to separate function
1 parent 3742391 commit a3c2ced

File tree

1 file changed

+47
-54
lines changed

1 file changed

+47
-54
lines changed

src/io/sqlite_store/migrations.rs

Lines changed: 47 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -13,62 +13,55 @@ pub(super) fn migrate_schema(
1313
) -> io::Result<()> {
1414
assert!(from_version < to_version);
1515
if from_version == 1 && to_version == 2 {
16-
let tx = connection.transaction().map_err(|e| {
17-
let msg = format!(
18-
"Failed to migrate table {} from user_version {} to {}: {}",
19-
kv_table_name, from_version, to_version, e
20-
);
21-
io::Error::new(io::ErrorKind::Other, msg)
22-
})?;
23-
24-
// Rename 'namespace' column to 'primary_namespace'
25-
let sql = format!(
26-
"ALTER TABLE {}
27-
RENAME COLUMN namespace TO primary_namespace;",
28-
kv_table_name
29-
);
30-
31-
tx.execute(&sql, []).map_err(|e| {
32-
let msg = format!(
33-
"Failed to migrate table {} from user_version {} to {}: {}",
34-
kv_table_name, from_version, to_version, e
35-
);
36-
io::Error::new(io::ErrorKind::Other, msg)
37-
})?;
38-
39-
// Add new 'secondary_namespace' column
40-
let sql = format!(
41-
"ALTER TABLE {}
42-
ADD secondary_namespace TEXT DEFAULT \"\" NOT NULL;",
43-
kv_table_name
44-
);
45-
46-
tx.execute(&sql, []).map_err(|e| {
47-
let msg = format!(
48-
"Failed to migrate table {} from user_version {} to {}: {}",
49-
kv_table_name, from_version, to_version, e
50-
);
51-
io::Error::new(io::ErrorKind::Other, msg)
52-
})?;
53-
54-
// Update user_version
55-
tx.pragma(Some(rusqlite::DatabaseName::Main), "user_version", to_version, |_| Ok(()))
56-
.map_err(|e| {
57-
let msg = format!(
58-
"Failed to upgrade user_version from {} to {}: {}",
59-
from_version, to_version, e
60-
);
61-
io::Error::new(io::ErrorKind::Other, msg)
62-
})?;
16+
migrate_v1_to_v2(connection, kv_table_name)?;
17+
}
6318

64-
tx.commit().map_err(|e| {
65-
let msg = format!(
66-
"Failed to migrate table {} from user_version {} to {}: {}",
67-
kv_table_name, from_version, to_version, e
68-
);
19+
Ok(())
20+
}
21+
22+
fn migrate_v1_to_v2(connection: &mut Connection, kv_table_name: &str) -> io::Result<()> {
23+
let tx = connection.transaction().map_err(|e| {
24+
let msg = format!("Failed to migrate table {} from v1 to v2: {}", kv_table_name, e);
25+
io::Error::new(io::ErrorKind::Other, msg)
26+
})?;
27+
28+
// Rename 'namespace' column to 'primary_namespace'
29+
let sql = format!(
30+
"ALTER TABLE {}
31+
RENAME COLUMN namespace TO primary_namespace;",
32+
kv_table_name
33+
);
34+
35+
tx.execute(&sql, []).map_err(|e| {
36+
let msg = format!("Failed to migrate table {} from v1 to v2: {}", kv_table_name, e);
37+
io::Error::new(io::ErrorKind::Other, msg)
38+
})?;
39+
40+
// Add new 'secondary_namespace' column
41+
let sql = format!(
42+
"ALTER TABLE {}
43+
ADD secondary_namespace TEXT DEFAULT \"\" NOT NULL;",
44+
kv_table_name
45+
);
46+
47+
tx.execute(&sql, []).map_err(|e| {
48+
let msg = format!("Failed to migrate table {} from v1 to v2: {}", kv_table_name, e);
49+
io::Error::new(io::ErrorKind::Other, msg)
50+
})?;
51+
52+
// Update user_version
53+
tx.pragma(Some(rusqlite::DatabaseName::Main), "user_version", 2u16, |_| Ok(())).map_err(
54+
|e| {
55+
let msg = format!("Failed to upgrade user_version from 1 to 2: {}", e);
6956
io::Error::new(io::ErrorKind::Other, msg)
70-
})?;
71-
}
57+
},
58+
)?;
59+
60+
tx.commit().map_err(|e| {
61+
let msg = format!("Failed to migrate table {} from v1 to v2: {}", kv_table_name, e);
62+
io::Error::new(io::ErrorKind::Other, msg)
63+
})?;
64+
7265
Ok(())
7366
}
7467

0 commit comments

Comments
 (0)