You've already forked AstralRinth
forked from didirus/AstralRinth
Improve error handling (#33)
* refactor: improve error handling * fix: specify bind address instead of port * fix: remove temporary testing file * fix(errors): change error names to snake_case * refactor(errors): split indexing error types, remove unused errors * feat: add env variable checking at program start This just checks whether the enviroment variables exist and can parse to the given type and gives a warning if they can't. This should prevent cases where the program fails at runtime due to checking an environment variable that doesn't exist.
This commit is contained in:
@@ -3,11 +3,12 @@ use futures::StreamExt;
|
||||
use log::info;
|
||||
|
||||
use crate::database::models::Item;
|
||||
use crate::database::{Mod, Version};
|
||||
use crate::database::{DatabaseError, Mod, Version};
|
||||
|
||||
use crate::search::{SearchError, SearchMod};
|
||||
use super::IndexingError;
|
||||
use crate::search::SearchMod;
|
||||
|
||||
pub async fn index_local(client: mongodb::Client) -> Result<Vec<SearchMod>, SearchError> {
|
||||
pub async fn index_local(client: mongodb::Client) -> Result<Vec<SearchMod>, IndexingError> {
|
||||
info!("Indexing local mods!");
|
||||
|
||||
let mut docs_to_add: Vec<SearchMod> = vec![];
|
||||
@@ -17,17 +18,26 @@ pub async fn index_local(client: mongodb::Client) -> Result<Vec<SearchMod>, Sear
|
||||
let mods = db.collection("mods");
|
||||
let versions = db.collection("versions");
|
||||
|
||||
let mut results = mods.find(None, None).await?;
|
||||
let mut results = mods
|
||||
.find(None, None)
|
||||
.await
|
||||
.map_err(DatabaseError::LocalDatabaseError)?;
|
||||
|
||||
while let Some(unparsed_result) = results.next().await {
|
||||
let result: Mod = *Mod::from_doc(unparsed_result?)?;
|
||||
let result: Mod =
|
||||
*Mod::from_doc(unparsed_result.map_err(DatabaseError::LocalDatabaseError)?)?;
|
||||
|
||||
let mut mod_versions = versions.find(doc! { "mod_id": result.id}, None).await?;
|
||||
let mut mod_versions = versions
|
||||
.find(doc! { "mod_id": result.id }, None)
|
||||
.await
|
||||
.map_err(DatabaseError::LocalDatabaseError)?;
|
||||
|
||||
let mut mod_game_versions = vec![];
|
||||
|
||||
while let Some(unparsed_version) = mod_versions.next().await {
|
||||
let mut version: Version = *Version::from_doc(unparsed_version?)?;
|
||||
let mut version = unparsed_version
|
||||
.map_err(DatabaseError::LocalDatabaseError)
|
||||
.and_then(Version::from_doc)?;
|
||||
mod_game_versions.append(&mut version.game_versions);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user