|
1 | 1 | use rusqlite::Connection;
|
2 | 2 |
|
3 |
| -pub(super) fn migrate_schema(connection: &Connection, kv_table_name: &str, from_version: u16, to_version: u16) { |
| 3 | +use lightning::io; |
| 4 | + |
| 5 | +pub(super) fn migrate_schema(connection: &Connection, kv_table_name: &str, from_version: u16, to_version: u16) -> io::Result<()> { |
4 | 6 | assert!(from_version < to_version);
|
5 | 7 | if from_version == 1 && to_version == 2 {
|
6 | 8 | let sql = format!(
|
7 | 9 | "ALTER TABLE {}
|
8 | 10 | ADD sub_namespace TEXT DEFAULT \"\" NOT NULL;",
|
9 | 11 | kv_table_name);
|
10 |
| - connection |
11 |
| - .execute(&sql, []) |
12 |
| - .unwrap_or_else(|e| |
13 |
| - panic!("Failed to migrate table {} from user_version {} to {}: {}", |
14 |
| - kv_table_name, from_version, to_version, e)); |
15 |
| - connection |
16 |
| - .pragma(Some(rusqlite::DatabaseName::Main), "user_version", to_version, |_| { Ok(()) }) |
17 |
| - .unwrap_or_else(|e| panic!("Failed to upgrade user_version from {} to {}: {}", |
| 12 | + connection .execute(&sql, []).map_err(|e| { |
| 13 | + let msg = format!("Failed to migrate table {} from user_version {} to {}: {}", |
| 14 | + kv_table_name, from_version, to_version, e); |
| 15 | + io::Error::new(e.kind(), msg) |
| 16 | + })?; |
| 17 | + |
| 18 | + connection.pragma(Some(rusqlite::DatabaseName::Main), |
| 19 | + "user_version", to_version, |_| { |
| 20 | + Ok(()) |
| 21 | + }).map_err(|e| { |
| 22 | + let msg = format!("Failed to upgrade user_version from {} to {}: {}", |
18 | 23 | from_version, to_version, e));
|
| 24 | + io::Error::new(e.kind(), msg) |
| 25 | + })?; |
19 | 26 | }
|
20 | 27 | }
|
21 | 28 |
|
|
0 commit comments