+\r
+ fn update_to_next_version(current_version: u32, tx: &rusqlite::Transaction) -> Result<bool, DBError> {\r
+ let next_version = current_version + 1;\r
+\r
+ if next_version <= CURRENT_DB_VERSION {\r
+ println!("Update to version {}...", next_version);\r
+ }\r
+\r
+ fn ok(updated: bool) -> Result<bool, DBError> {\r
+ if updated {\r
+ println!("Version updated");\r
+ }\r
+ Ok(updated)\r
+ }\r
+\r
+ match next_version {\r
+ 1 => {\r
+ tx.execute_batch(&load_sql_file(next_version)?)?;\r
+\r
+ ok(true)\r
+ }\r
+\r
+ // Version 1 doesn't exist yet.\r
+ 2 =>\r
+ ok(false),\r
+\r
+ v =>\r
+ Err(DBError::UnsupportedVersion(v)),\r
+ }\r
+ }\r
+\r
+ pub fn get_all_recipes() {\r
+\r
+ }\r
+}\r
+\r
+fn load_sql_file(version: u32) -> Result<String, DBError> {\r
+ let sql_file = SQL_FILENAME.replace("{VERSION}", &version.to_string());\r
+ let mut file = File::open(&sql_file).map_err(|err| DBError::Other(format!("Cannot open SQL file ({}): {}", &sql_file, err.to_string())))?;\r
+ let mut sql = String::new();\r
+ file.read_to_string(&mut sql).map_err(|err| DBError::Other(format!("Cannot read SQL file ({}) : {}", &sql_file, err.to_string())))?;\r
+ Ok(sql)\r