fix(setup): align dependencies to Axum 0.8 and fix server function handler trait bounds
All checks were successful
Build MIPS Binary / build (push) Successful in 5m23s

This commit is contained in:
spinline
2026-02-11 22:15:33 +03:00
parent 09a4c69282
commit 3e9a042444
4 changed files with 207 additions and 54 deletions

View File

@@ -4,7 +4,7 @@ version = "0.1.0"
edition = "2021"
[features]
default = ["swagger"] # push-notifications kaldırıldı
default = ["swagger"]
push-notifications = ["web-push", "openssl"]
swagger = ["utoipa-swagger-ui"]
@@ -28,7 +28,7 @@ clap = { version = "4.4", features = ["derive", "env"] }
rust-embed = "8.2"
mime_guess = "2.0"
shared = { path = "../shared", features = ["ssr"] }
thiserror = "2.0.18"
thiserror = "2.0"
dotenvy = "0.15.7"
utoipa = { version = "5.4.0", features = ["axum_extras"] }
utoipa-swagger-ui = { version = "9.0", features = ["axum"], optional = true }
@@ -38,12 +38,13 @@ openssl = { version = "0.10", features = ["vendored"], optional = true }
bcrypt = "0.17.0"
axum-extra = { version = "0.10", features = ["cookie"] }
rand = "0.8"
anyhow = "1.0.101"
time = { version = "0.3.47", features = ["serde", "formatting", "parsing"] }
anyhow = "1.0"
time = { version = "0.3", features = ["serde", "formatting", "parsing"] }
tower_governor = "0.8.0"
governor = "0.10.4"
# Leptos
leptos = { version = "0.8.15", features = ["nightly", "msgpack"] }
leptos_axum = { version = "0.8.7" }
leptos_router = { version = "0.8.11" }
jsonwebtoken = "9"

View File

@@ -26,7 +26,7 @@ use std::time::Duration;
use tokio::sync::{broadcast, watch};
use tower::ServiceBuilder;
use tower_http::{
compression::{CompressionLayer, CompressionLevel},
compression::CompressionLayer,
cors::CorsLayer,
trace::TraceLayer,
};
@@ -407,37 +407,37 @@ async fn main() {
}
});
async fn server_fn_handler(
axum::extract::State(state): axum::extract::State<AppState>,
req: Request<Body>,
) -> impl axum::response::IntoResponse {
let scgi_path = state.scgi_socket_path.clone();
let db = state.db.clone();
leptos_axum::handle_server_fns_with_context(
move || {
leptos::context::provide_context(shared::ServerContext {
scgi_socket_path: scgi_path.clone(),
});
leptos::context::provide_context(shared::DbContext {
db: db.clone(),
});
},
req,
).await
}
let app = Router::new();
#[cfg(feature = "swagger")]
let app = app.merge(SwaggerUi::new("/swagger-ui").url("/api-docs/openapi.json", ApiDoc::openapi()));
// Setup & Auth Routes (cookie-based, stay as REST)
// Setup & Auth Routes (cookie-based, stay as REST)
let scgi_path_for_ctx = args.socket.clone();
let db_for_ctx = db.clone();
let app = app
.route("/api/events", get(sse::sse_handler))
.route("/api/server_fns/{*fn_name}", post({
let scgi_path = scgi_path_for_ctx.clone();
let db = db_for_ctx.clone();
move |req: Request<Body>| {
let scgi_path = scgi_path.clone();
let db = db.clone();
leptos_axum::handle_server_fns_with_context(
move || {
leptos::context::provide_context(shared::ServerContext {
scgi_socket_path: scgi_path.clone(),
});
leptos::context::provide_context(shared::DbContext {
db: db.clone(),
});
},
req,
)
}
}))
.fallback(handlers::static_handler);
.route("/api/server_fns/{*fn_name}", post(server_fn_handler))
.fallback(handlers::static_handler)
.with_state(app_state.clone());
let app = app
.layer(middleware::from_fn_with_state(app_state.clone(), auth_middleware))
@@ -445,8 +445,7 @@ async fn main() {
.layer(
CompressionLayer::new()
.br(false)
.gzip(true)
.quality(CompressionLevel::Fastest),
.gzip(true),
)
.layer(
ServiceBuilder::new()