Merge branch 'db-errors' into 'next'
fix(database): handle errors in config parsin or database creation Closes #121 See merge request famedly/conduit!193
This commit is contained in:
		
						commit
						562a2524d7
					
				
					 2 changed files with 22 additions and 6 deletions
				
			
		|  | @ -198,6 +198,11 @@ impl Database { | |||
|     pub async fn load_or_create(config: &Config) -> Result<Arc<TokioRwLock<Self>>> { | ||||
|         Self::check_sled_or_sqlite_db(&config)?; | ||||
| 
 | ||||
|         if !Path::new(&config.database_path).exists() { | ||||
|             std::fs::create_dir_all(&config.database_path) | ||||
|                 .map_err(|_| Error::BadConfig("Database folder doesn't exists and couldn't be created (e.g. due to missing permissions). Please create the database folder yourself."))?; | ||||
|         } | ||||
| 
 | ||||
|         let builder = Engine::open(&config)?; | ||||
| 
 | ||||
|         if config.max_request_size < 1024 { | ||||
|  |  | |||
							
								
								
									
										23
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								src/main.rs
									
									
									
									
									
								
							|  | @ -199,16 +199,27 @@ async fn main() { | |||
| 
 | ||||
|     std::env::set_var("RUST_LOG", "warn"); | ||||
| 
 | ||||
|     let config = raw_config | ||||
|         .extract::<Config>() | ||||
|         .expect("It looks like your config is invalid. Please take a look at the error"); | ||||
|     let config = match raw_config.extract::<Config>() { | ||||
|         Ok(s) => s, | ||||
|         Err(e) => { | ||||
|             eprintln!("It looks like your config is invalid. The following error occured while parsing it: {}", e); | ||||
|             std::process::exit(1); | ||||
|         } | ||||
|     }; | ||||
| 
 | ||||
|     let start = async { | ||||
|         config.warn_deprecated(); | ||||
| 
 | ||||
|         let db = Database::load_or_create(&config) | ||||
|             .await | ||||
|             .expect("config is valid"); | ||||
|         let db = match Database::load_or_create(&config).await { | ||||
|             Ok(db) => db, | ||||
|             Err(e) => { | ||||
|                 eprintln!( | ||||
|                     "The database couldn't be loaded or created. The following error occured: {}", | ||||
|                     e | ||||
|                 ); | ||||
|                 std::process::exit(1); | ||||
|             } | ||||
|         }; | ||||
| 
 | ||||
|         let rocket = setup_rocket(raw_config, Arc::clone(&db)) | ||||
|             .ignite() | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue