summaryrefslogtreecommitdiff
path: root/src/boot/routes.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/boot/routes.rs')
-rw-r--r--src/boot/routes.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/boot/routes.rs b/src/boot/routes.rs
new file mode 100644
index 0000000..80f70bd
--- /dev/null
+++ b/src/boot/routes.rs
@@ -0,0 +1,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,
+}