summaryrefslogtreecommitdiff
path: root/src/boot/routes.rs
blob: 80f70bdb927351d286c0207812550ff1b5018808 (plain)
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
use axum::{
    extract::{Json, State},
    routing::get,
    Router,
};

use super::Snapshot;
use crate::{app::App, error::Internal, login::Login};

#[cfg(test)]
mod test;

pub fn router() -> Router<App> {
    Router::new().route("/api/boot", get(boot))
}

async fn boot(State(app): State<App>, login: Login) -> Result<Json<Boot>, Internal> {
    let snapshot = app.boot().snapshot().await?;
    Ok(Boot { login, snapshot }.into())
}

#[derive(serde::Serialize)]
struct Boot {
    login: Login,
    #[serde(flatten)]
    snapshot: Snapshot,
}