aboutsummaryrefslogtreecommitdiffstats
path: root/crates/turtle/src/atuin_server/router.rs
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-06-11 16:10:29 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-06-11 16:10:29 +0200
commit97f207b771b94c5285faae4810d6eeda1b78926b (patch)
tree4482544233c30e0e9a62be6afcfe92c8e01b0a50 /crates/turtle/src/atuin_server/router.rs
parentchore: Remove all `pub`s (diff)
downloadatuin-97f207b771b94c5285faae4810d6eeda1b78926b.zip
chore(server): Simplify the database support
Diffstat (limited to 'crates/turtle/src/atuin_server/router.rs')
-rw-r--r--crates/turtle/src/atuin_server/router.rs45
1 files changed, 10 insertions, 35 deletions
diff --git a/crates/turtle/src/atuin_server/router.rs b/crates/turtle/src/atuin_server/router.rs
index ed3d1e55..778e699a 100644
--- a/crates/turtle/src/atuin_server/router.rs
+++ b/crates/turtle/src/atuin_server/router.rs
@@ -1,4 +1,7 @@
-use crate::atuin_common::api::{ATUIN_CARGO_VERSION, ATUIN_HEADER_VERSION, ErrorResponse};
+use crate::{
+ atuin_common::api::{ATUIN_CARGO_VERSION, ATUIN_HEADER_VERSION, ErrorResponse},
+ atuin_server::database::{DbError, db::Database, models::User},
+};
use axum::{
Router,
extract::{FromRequestParts, Request},
@@ -17,19 +20,15 @@ use crate::atuin_server::{
metrics,
settings::Settings,
};
-use crate::atuin_server_database::{Database, DbError, models::User};
pub(crate) struct UserAuth(pub(crate) User);
-impl<DB: Send + Sync> FromRequestParts<AppState<DB>> for UserAuth
-where
- DB: Database,
-{
+impl FromRequestParts<AppState> for UserAuth {
type Rejection = ErrorResponseStatus<'static>;
async fn from_request_parts(
req: &mut Parts,
- state: &AppState<DB>,
+ state: &AppState,
) -> Result<Self, Self::Rejection> {
let auth_header = req
.headers
@@ -78,18 +77,6 @@ async fn teapot() -> impl IntoResponse {
(http::StatusCode::NOT_FOUND, "404 not found")
}
-async fn clacks_overhead(request: Request, next: Next) -> Response {
- let mut response = next.run(request).await;
-
- let gnu_terry_value = "GNU Terry Pratchett, Kris Nova";
- let gnu_terry_header = "X-Clacks-Overhead";
-
- response
- .headers_mut()
- .insert(gnu_terry_header, gnu_terry_value.parse().unwrap());
- response
-}
-
/// Ensure that we only try and sync with clients on the same major version
async fn semver(request: Request, next: Next) -> Response {
let mut response = next.run(request).await;
@@ -101,27 +88,16 @@ async fn semver(request: Request, next: Next) -> Response {
}
#[derive(Clone)]
-pub(crate) struct AppState<DB: Database> {
- pub(crate) database: DB,
+pub(crate) struct AppState {
+ pub(crate) database: Database,
pub(crate) settings: Settings,
}
-pub(crate) fn router<DB: Database>(database: DB, settings: Settings) -> Router {
- let mut routes = Router::new()
+pub(crate) fn router(database: Database, settings: Settings) -> Router {
+ let routes = Router::new()
.route("/", get(handlers::index))
.route("/healthz", get(handlers::health::health_check));
- // Sync v1 routes - can be disabled in favor of record-based sync
- if settings.sync_v1_enabled {
- routes = routes
- .route("/sync/count", get(handlers::history::count))
- .route("/sync/history", get(handlers::history::list))
- .route("/sync/calendar/{focus}", get(handlers::history::calendar))
- .route("/sync/status", get(handlers::status::status))
- .route("/history", post(handlers::history::add))
- .route("/history", delete(handlers::history::delete));
- }
-
let routes = routes
.route("/user/{username}", get(handlers::user::get))
.route("/account", delete(handlers::user::delete))
@@ -147,7 +123,6 @@ pub(crate) fn router<DB: Database>(database: DB, settings: Settings) -> Router {
.with_state(AppState { database, settings })
.layer(
ServiceBuilder::new()
- .layer(axum::middleware::from_fn(clacks_overhead))
.layer(TraceLayer::new_for_http())
.layer(axum::middleware::from_fn(metrics::track_metrics))
.layer(axum::middleware::from_fn(semver)),