From 01f0c873a918c5fab9ae036a11b1b8146808bb34 Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Sun, 8 Dec 2024 11:02:34 +0000 Subject: [PATCH] Add server initialisation --- backend/sync_server/src/app_state.rs | 19 +++++++++++++++++++ backend/sync_server/src/main.rs | 27 +++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 backend/sync_server/src/app_state.rs create mode 100644 backend/sync_server/src/main.rs diff --git a/backend/sync_server/src/app_state.rs b/backend/sync_server/src/app_state.rs new file mode 100644 index 00000000..dfec42c7 --- /dev/null +++ b/backend/sync_server/src/app_state.rs @@ -0,0 +1,19 @@ +use crate::{config::Config, consts::CONFIG_PATH, database::Database}; +use anyhow::Result; + +#[derive(Clone, Debug)] +pub struct AppState { + pub config: Config, + pub database: Database, +} + +impl AppState { + pub async fn try_new() -> Result { + let path = std::path::Path::new(CONFIG_PATH); + + let config = Config::read(path).await?; + let database = Database::try_new(&config.database).await?; + + Ok(Self { config, database }) + } +} diff --git a/backend/sync_server/src/main.rs b/backend/sync_server/src/main.rs new file mode 100644 index 00000000..dc84d5b1 --- /dev/null +++ b/backend/sync_server/src/main.rs @@ -0,0 +1,27 @@ +mod app_state; +mod config; +mod consts; +mod database; +mod errors; +mod server; + +use anyhow::{Context, Result}; +use app_state::AppState; +use errors::{init_error, SyncServerError}; +use server::create_server; +use std::sync::Arc; + +#[tokio::main] +async fn main() -> Result<(), SyncServerError> { + tracing_subscriber::fmt::init(); + + let app_state = AppState::try_new() + .await + .context("Failed to initialise app state") + .map_err(init_error)?; + + create_server(app_state) + .await + .context("Failed to start server") + .map_err(init_error) +}