feat: extended fallback handler
dedicated 404 page
This commit is contained in:
parent
3aec5256ba
commit
5f1cc358fd
3 changed files with 58 additions and 3 deletions
18
dist/404.css
vendored
Normal file
18
dist/404.css
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
html {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
main {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 1rem;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
35
dist/404.html
vendored
Normal file
35
dist/404.html
vendored
Normal file
|
@ -0,0 +1,35 @@
|
|||
<!doctype html>
|
||||
<html class="no-js" lang="">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>clubmanager</title>
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
|
||||
<meta property="og:title" content="">
|
||||
<meta property="og:type" content="">
|
||||
<meta property="og:url" content="">
|
||||
<meta property="og:image" content="">
|
||||
|
||||
<!-- <link rel="icon" href="/favicon.ico" sizes="any">
|
||||
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
||||
<!-- <link rel="icon" href="/icon.svg" type="image/svg+xml"> -->
|
||||
|
||||
<link rel="stylesheet" href="/404.css" />
|
||||
|
||||
<script src="https://unpkg.com/htmx.org@1.9.5"></script>
|
||||
<script src="https://unpkg.com/htmx.org/dist/ext/sse.js"></script>
|
||||
|
||||
<!-- <link rel="manifest" href="site.webmanifest"> -->
|
||||
<meta name="theme-color" content="#fafafa">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<main>
|
||||
<div>404: Page not found</div>
|
||||
<a hx-boost href="/"><button>Return Home</button></a>
|
||||
</main>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -14,7 +14,7 @@ use diesel_async::{
|
|||
};
|
||||
use dotenvy::dotenv;
|
||||
use std::net::SocketAddr;
|
||||
use tower_http::services::ServeDir;
|
||||
use tower_http::services::{ServeDir, ServeFile};
|
||||
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
|
||||
|
||||
include!(concat!(env!("OUT_DIR"), "/templates.rs"));
|
||||
|
@ -57,12 +57,14 @@ async fn main() {
|
|||
|
||||
let state = AppState::init().await;
|
||||
|
||||
let fallback_handler = ServeDir::new("dist").not_found_service(ServeFile::new("dist/404.html"));
|
||||
|
||||
// build our application with a route
|
||||
let app = Router::new()
|
||||
.nest("/api", api::router())
|
||||
.route("/", get(root))
|
||||
.route("/shifts/:id/drinks", get(drinks))
|
||||
.fallback_service(ServeDir::new("./dist"))
|
||||
.fallback_service(fallback_handler)
|
||||
.with_state(state);
|
||||
|
||||
// run our app with hyper
|
||||
|
@ -87,7 +89,7 @@ async fn root(State(state): State<AppState>) -> impl IntoResponse {
|
|||
.first(&mut conn)
|
||||
.await
|
||||
.optional()
|
||||
.expect("Query failed")
|
||||
.expect("Query failed: No open shifts found")
|
||||
};
|
||||
|
||||
tracing::debug!("{open_shift:?}");
|
||||
|
|
Loading…
Reference in a new issue