oko/
lib.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};

pub use crate::web::{App, ImageContainer};

mod db;
mod users;
mod web;

pub use {
    db::Camera, db::CameraPermission, db::CameraPermissionUserView, db::CameraPermissionView,
    db::CameraSetting, db::Model, db::User, db::Video, db::VideoCameraView,
};

pub async fn run() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
    // TODO: Improve this, log to file, etc.
    // TODO: Use tracing wherever '?' is used.
    tracing_subscriber::registry()
        .with(
            tracing_subscriber::EnvFilter::try_from_default_env().unwrap_or_else(|_| {
                format!(
                    "{}=debug,axum_login=debug,tower_sessions=debug,sqlx=warn,tower_http=debug",
                    env!("CARGO_CRATE_NAME")
                )
                .into()
            }),
        )
        .with(tracing_subscriber::fmt::layer().compact().without_time())
        .try_init()?;

    // TODO: Properly handle errors.
    App::new().await?.serve().await?;

    Ok(())
}