Skip to content

Commit e54520f

Browse files
committed
f Make constructor fallible
1 parent f1f4a01 commit e54520f

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

lightning-persister/src/sqlite_store/migrations.rs

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,28 @@
11
use rusqlite::Connection;
22

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<()> {
46
assert!(from_version < to_version);
57
if from_version == 1 && to_version == 2 {
68
let sql = format!(
79
"ALTER TABLE {}
810
ADD sub_namespace TEXT DEFAULT \"\" NOT NULL;",
911
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 {}: {}",
1823
from_version, to_version, e));
24+
io::Error::new(e.kind(), msg)
25+
})?;
1926
}
2027
}
2128

lightning-persister/src/sqlite_store/mod.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,12 @@ impl SqliteStore {
6868
io::Error::new(e.kind(), msg)
6969
})?;
7070
} else if version_res < SCHEMA_USER_VERSION {
71-
migrations::migrate_schema(&connection, &kv_table_name, version_res, SCHEMA_USER_VERSION);
71+
migrations::migrate_schema(&connection, &kv_table_name, version_res,
72+
SCHEMA_USER_VERSION)?;
7273
} else if version_res > SCHEMA_USER_VERSION {
73-
panic!("Failed to open database: incompatible schema version {}. Expected: {}", version_res, SCHEMA_USER_VERSION);
74+
let msg = format!("Failed to open database: incompatible schema version {}. Expected: {}",
75+
version_res, SCHEMA_USER_VERSION);
76+
return Err(io::Error::new(io::ErrorKind::Other, msg));
7477
}
7578

7679
let sql = format!(

0 commit comments

Comments
 (0)