summaryrefslogtreecommitdiff
path: root/src/boot/routes.rs
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-05 23:00:58 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-05 23:00:58 -0400
commit05de3c7b211727039b3912311aa4bab6787a7457 (patch)
tree08a3860b68391514390f42872ccc1cb4c6e6afd2 /src/boot/routes.rs
parentbc514e0ea5f0a553f15ab8275961907877181520 (diff)
parent6a10fcaf64938da52b326ea80013d9f30ed62a6c (diff)
Merge branch 'wip/boot'
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,
+}