Add REST service which provides the version

This commit is contained in:
Simon Goller 2024-06-26 13:04:35 +02:00
parent ef897bc80f
commit 9011f223c7
2 changed files with 14 additions and 0 deletions

View file

@ -77,6 +77,10 @@ impl rest::RestStateDef for RestStateImpl {
type WorkingHoursService = WorkingHoursService; type WorkingHoursService = WorkingHoursService;
type ExtraHoursService = ExtraHoursService; type ExtraHoursService = ExtraHoursService;
fn backend_version(&self) -> Arc<str> {
Arc::from(env!("CARGO_PKG_VERSION"))
}
fn user_service(&self) -> Arc<Self::UserService> { fn user_service(&self) -> Arc<Self::UserService> {
self.user_service.clone() self.user_service.clone()
} }

View file

@ -237,6 +237,8 @@ pub trait RestStateDef: Clone + Send + Sync + 'static {
+ Sync + Sync
+ 'static; + 'static;
fn backend_version(&self) -> Arc<str>;
fn user_service(&self) -> Arc<Self::UserService>; fn user_service(&self) -> Arc<Self::UserService>;
fn permission_service(&self) -> Arc<Self::PermissionService>; fn permission_service(&self) -> Arc<Self::PermissionService>;
fn slot_service(&self) -> Arc<Self::SlotService>; fn slot_service(&self) -> Arc<Self::SlotService>;
@ -276,6 +278,13 @@ pub async fn login() -> Redirect {
Redirect::to("/") Redirect::to("/")
} }
pub async fn get_version<RestState: RestStateDef>(rest_state: State<RestState>) -> Response {
Response::builder()
.status(200)
.body(Body::new(rest_state.backend_version().to_string()))
.unwrap()
}
#[cfg(feature = "oidc")] #[cfg(feature = "oidc")]
use axum_oidc::OidcRpInitiatedLogout; use axum_oidc::OidcRpInitiatedLogout;
#[cfg(feature = "oidc")] #[cfg(feature = "oidc")]
@ -344,6 +353,7 @@ pub async fn start_server<RestState: RestStateDef>(rest_state: RestState) {
let app = app let app = app
.route("/auth-info", get(auth_info::<RestState>)) .route("/auth-info", get(auth_info::<RestState>))
.route("/version", get(get_version::<RestState>))
.nest("/permission", permission::generate_route()) .nest("/permission", permission::generate_route())
.nest("/slot", slot::generate_route()) .nest("/slot", slot::generate_route())
.nest("/sales-person", sales_person::generate_route()) .nest("/sales-person", sales_person::generate_route())