From bbdf38018b47328b5faa2cef635c37095045be72 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Fri, 12 Jun 2026 01:54:21 +0200 Subject: feat(server): Really make users stateless (with tests) This commit also remove another load of unneeded features. --- crates/turtle/src/atuin_server/database/calendar.rs | 18 ------------------ crates/turtle/src/atuin_server/database/db/mod.rs | 13 +++++++------ crates/turtle/src/atuin_server/database/db/wrappers.rs | 16 +--------------- crates/turtle/src/atuin_server/database/mod.rs | 6 ++++-- 4 files changed, 12 insertions(+), 41 deletions(-) delete mode 100644 crates/turtle/src/atuin_server/database/calendar.rs (limited to 'crates/turtle/src/atuin_server/database') diff --git a/crates/turtle/src/atuin_server/database/calendar.rs b/crates/turtle/src/atuin_server/database/calendar.rs deleted file mode 100644 index f1c78262..00000000 --- a/crates/turtle/src/atuin_server/database/calendar.rs +++ /dev/null @@ -1,18 +0,0 @@ -// Calendar data - -use serde::{Deserialize, Serialize}; -use time::Month; - -pub(crate) enum TimePeriod { - Year, - Month { year: i32 }, - Day { year: i32, month: Month }, -} - -#[derive(Debug, Serialize, Deserialize)] -pub(crate) struct TimePeriodInfo { - pub(crate) count: u64, - - // TODO: Use this for merkle tree magic - pub(crate) hash: String, -} diff --git a/crates/turtle/src/atuin_server/database/db/mod.rs b/crates/turtle/src/atuin_server/database/db/mod.rs index 4ec51bf1..5b3c169b 100644 --- a/crates/turtle/src/atuin_server/database/db/mod.rs +++ b/crates/turtle/src/atuin_server/database/db/mod.rs @@ -17,13 +17,13 @@ mod wrappers; const MIN_PG_VERSION: u32 = 14; #[derive(Clone)] -pub struct Database { +pub struct ServerPostgres { pool: sqlx::Pool, /// Optional read replica pool for read-only queries read_pool: Option>, } -impl Database { +impl ServerPostgres { /// Returns the appropriate pool for read operations. /// Uses read_pool if available, otherwise falls back to the primary pool. fn read_pool(&self) -> &sqlx::Pool { @@ -31,7 +31,7 @@ impl Database { } } -impl Database { +impl ServerPostgres { pub(crate) async fn new(settings: &DbSettings) -> DbResult { let pool = PgPoolOptions::new() .max_connections(100) @@ -138,7 +138,7 @@ impl Database { .entry((i.host.id, &i.tag)) .and_modify(|e| { if i.idx > *e { - *e = i.idx + *e = i.idx; } }) .or_insert(i.idx); @@ -229,7 +229,8 @@ impl Database { // 3. If we don't use the cache, read from the store table // IDX_CACHE_ROLLOUT should be between 0 and 100. - let idx_cache_rollout = std::env::var("IDX_CACHE_ROLLOUT").unwrap_or("0".to_string()); + let idx_cache_rollout = + std::env::var("IDX_CACHE_ROLLOUT").unwrap_or_else(|_| "0".to_string()); let idx_cache_rollout = idx_cache_rollout.parse::().unwrap_or(0.0); let use_idx_cache = rand::thread_rng().gen_bool(idx_cache_rollout / 100.0); @@ -264,7 +265,7 @@ impl Database { let mut status = RecordStatus::new(); - for i in res.iter() { + for i in &res { status.set_raw(HostId(i.0), i.1.clone(), i.2 as u64); } diff --git a/crates/turtle/src/atuin_server/database/db/wrappers.rs b/crates/turtle/src/atuin_server/database/db/wrappers.rs index 40fd5b4a..8a52d56e 100644 --- a/crates/turtle/src/atuin_server/database/db/wrappers.rs +++ b/crates/turtle/src/atuin_server/database/db/wrappers.rs @@ -1,22 +1,8 @@ -use crate::{ - atuin_common::record::{EncryptedData, Host, Record}, - atuin_server::database::models::Session, -}; +use crate::atuin_common::record::{EncryptedData, Host, Record}; use sqlx::{Row, postgres::PgRow}; -pub struct DbSession(pub Session); pub struct DbRecord(pub Record); -impl<'a> ::sqlx::FromRow<'a, PgRow> for DbSession { - fn from_row(row: &'a PgRow) -> ::sqlx::Result { - Ok(Self(Session { - id: row.try_get("id")?, - user_id: row.try_get("user_id")?, - token: row.try_get("token")?, - })) - } -} - impl<'a> ::sqlx::FromRow<'a, PgRow> for DbRecord { fn from_row(row: &'a PgRow) -> ::sqlx::Result { let timestamp: i64 = row.try_get("timestamp")?; diff --git a/crates/turtle/src/atuin_server/database/mod.rs b/crates/turtle/src/atuin_server/database/mod.rs index a009ae1f..bb64767a 100644 --- a/crates/turtle/src/atuin_server/database/mod.rs +++ b/crates/turtle/src/atuin_server/database/mod.rs @@ -1,4 +1,3 @@ -pub(crate) mod calendar; pub(crate) mod db; pub(crate) mod models; @@ -14,7 +13,10 @@ pub(crate) enum DbError { impl Display for DbError { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!(f, "{self:?}") + match self { + DbError::NotFound => write!(f, "Not found"), + DbError::Other(report) => write!(f, "Other: {report}"), + } } } -- cgit v1.3.1