Add server initialisation

This commit is contained in:
Andras Schmelczer 2024-12-08 11:02:34 +00:00
parent c2dceb0be4
commit 01f0c873a9
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C
2 changed files with 46 additions and 0 deletions

View file

@ -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<Self> {
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 })
}
}

View file

@ -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)
}