You've already forked AstralRinth
forked from didirus/AstralRinth
* chore: Removed everything not needed, and added base for rewrite feat(error_handling): Added 404 general cache feat(index): Added informations about the app in the / route. * feat(indexing): Brought back the indexing, with conditions to make it easier * fix: Fixed build error with a forgotten call * feat: Add Docker development enviroment (#19) * ci: add a *lot* of new actions * fix: rename linting action * fix: invalid yaml begone(?) * ci: Added cache to speed up build times * fix(ci): 🦀ed the yaml errors * fix(ci): fixed a missing hyphen * ci: Added matrix of rust versions, and changed way to install rust toolchain * fix(ci): Added names to build with the matrix so it's easier to find the source of the problem * style(ci): Added eof lines * refactor: Finished moving the search.rs file to a separate module. * Search Endpoint * refactor: Moved around functions and struct for a better understanding of what it does. * chore: Change env default settings to resolve conversation * refactor: Removed #[use_macros] fix: Fixed meilisearch address from env * chore: Added email to Aeledfyr * fix: Brought back the dotenv variables * style: Ran `cargo fmt` Co-authored-by: Charalampos Fanoulis <charalampos.fanoulis@gmail.com> Co-authored-by: Jai A <jai.a@tuta.io>
28 lines
796 B
Rust
28 lines
796 B
Rust
mod mod_item;
|
|
mod version_item;
|
|
|
|
use crate::database::DatabaseError::NotFound;
|
|
use crate::database::Result;
|
|
use async_trait::async_trait;
|
|
use bson::doc;
|
|
use bson::Document;
|
|
pub use mod_item::Mod;
|
|
use mongodb::Database;
|
|
pub use version_item::Version;
|
|
|
|
#[async_trait]
|
|
pub trait Item {
|
|
fn get_collection() -> &'static str;
|
|
async fn get_by_id(client: Database, id: &str) -> Result<Box<Self>> {
|
|
let filter = doc! { "_id": id };
|
|
let collection = client.collection(Self::get_collection());
|
|
let doc: Document = match collection.find_one(filter, None).await? {
|
|
Some(e) => e,
|
|
None => return Err(NotFound()),
|
|
};
|
|
let elem: Box<Self> = Self::from_doc(doc)?;
|
|
Ok(elem)
|
|
}
|
|
fn from_doc(elem: Document) -> Result<Box<Self>>;
|
|
}
|