first route! get logo from database

This commit is contained in:
Philippe Loctaux 2023-02-28 17:28:55 +01:00
parent a85f29d3a8
commit 7ed2f4c922
4 changed files with 53 additions and 0 deletions

View file

@ -0,0 +1,7 @@
use super::Error;
impl From<settings::Error> for Error {
fn from(e: settings::Error) -> Error {
Error::internal_server_error(e)
}
}

View file

@ -1,4 +1,8 @@
mod database;
mod error;
mod file_from_bytes;
mod response_timer;
mod routes;
mod shutdown;
// see for using rocket with main function https://github.com/intellij-rust/intellij-rust/issues/5975#issuecomment-920620289
@ -13,6 +17,15 @@ async fn main() -> std::result::Result<(), rocket::Error> {
// Database
let rocket_builder = database::Database::rocket(rocket_builder);
// Templates
let rocket_builder = rocket_builder.attach(rocket_dyn_templates::Template::fairing());
// Routes
let rocket_builder = routes::routes(rocket_builder);
// Errors
let rocket_builder = error::catchers::register(rocket_builder);
// Shutdown
let rocket_builder = shutdown::shutdown(rocket_builder);

View file

@ -0,0 +1,17 @@
use rocket::{Build, Rocket};
pub mod root;
pub(self) mod prelude {
pub use crate::database::Database;
pub use crate::error::Error;
pub use crate::file_from_bytes::FileFromBytes;
pub use rocket_db_pools::Connection;
pub type Result<T> = std::result::Result<T, Error>;
}
pub fn routes(rocket_builder: Rocket<Build>) -> Rocket<Build> {
// Root
rocket_builder.mount("/", root::routes())
}

View file

@ -0,0 +1,16 @@
use super::prelude::*;
use rocket::{get, routes};
use settings::Settings;
pub fn routes() -> Vec<rocket::Route> {
routes![logo]
}
#[get("/logo")]
async fn logo(mut db: Connection<Database>) -> Result<FileFromBytes> {
// Get settings
let settings = Settings::get(&mut *db).await?;
// HTTP response
Ok(FileFromBytes::from(settings.business_logo()))
}