diff --git a/backend/src/api.rs b/backend/src/api.rs index fbfa7da..d96b876 100644 --- a/backend/src/api.rs +++ b/backend/src/api.rs @@ -156,6 +156,26 @@ pub fn make_switch(conn: MainDatabase, who: StringBody) -> Result { Ok(to.cmene) } +#[get("/switches/")] +#[instrument(skip(conn), err)] +pub fn get_switch(conn: MainDatabase, switch_id: String) -> Result> { + use schema::{members, switches::dsl::switches}; + + let (switch, member): (models::Switch, models::Member) = switches + .find(switch_id) + .inner_join(members::table) + .get_result(&*conn) + .map_err(Error::Database)?; + + Ok(Json(FrontChange { + id: switch.id, + who: member.cmene, + started_at: switch.started_at, + ended_at: switch.ended_at, + duration: switch.duration, + })) +} + #[derive(Debug)] pub struct StringBody(String); diff --git a/backend/src/main.rs b/backend/src/main.rs index 93187cf..6d07c65 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -41,6 +41,7 @@ fn main() -> Result<()> { routes![ api::get_members, api::get_switches, + api::get_switch, api::get_current_front, api::make_switch ],