From 97f207b771b94c5285faae4810d6eeda1b78926b Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Thu, 11 Jun 2026 16:10:29 +0200 Subject: chore(server): Simplify the database support --- crates/turtle/src/atuin_server/router.rs | 45 +++++++------------------------- 1 file changed, 10 insertions(+), 35 deletions(-) (limited to 'crates/turtle/src/atuin_server/router.rs') 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 FromRequestParts> for UserAuth -where - DB: Database, -{ +impl FromRequestParts for UserAuth { type Rejection = ErrorResponseStatus<'static>; async fn from_request_parts( req: &mut Parts, - state: &AppState, + state: &AppState, ) -> Result { 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 { - pub(crate) database: DB, +pub(crate) struct AppState { + pub(crate) database: Database, pub(crate) settings: Settings, } -pub(crate) fn router(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(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)), -- cgit v1.3.1