diff options
| author | Scotte Zinn <scotte@zinn.ca> | 2025-06-23 07:31:55 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-23 12:31:55 +0100 |
| commit | 7f868711f0a7c77c868a2dd956fcc594d3d95ec8 (patch) | |
| tree | d19d879cbe6b33624cd0724fb498cddf72e8a466 /crates/atuin-server-postgres | |
| parent | fix(search): prevent panic on malformed format strings (#2776) (#2777) (diff) | |
| download | atuin-7f868711f0a7c77c868a2dd956fcc594d3d95ec8.zip | |
feat: Add sqlite server support for self-hosting (#2770)
* Move db_uri setting to DbSettings
* WIP: sqlite crate framework
* WIP: Migrations
* WIP: sqlite implementation
* Add sqlite3 to Docker image
* verified_at needed for user query
* chore(deps): bump debian (#2772)
Bumps debian from bookworm-20250428-slim to bookworm-20250520-slim.
---
updated-dependencies:
- dependency-name: debian
dependency-version: bookworm-20250520-slim
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix(doctor): mention the required ble.sh version (#2774)
References:
https://forum.atuin.sh/t/1047
* fix: Don't print errors in `zsh_autosuggest` helper (#2780)
Previously, this would result in long multi-line errors when typing,
making it hard to see the shell prompt:
```
$ Error: could not load client settings
Caused by:
0: could not create config file
1: failed to create file `/home/jyn/.config/atuin/config.toml`
2: Required key not available (os error 126)
Location:
atuin-client/src/settings.rs:675:54
fError: could not load client settings
Caused by:
0: could not create config file
1: failed to create file `/home/jyn/.config/atuin/config.toml`
2: Required key not available (os error 126)
Location:
atuin-client/src/settings.rs:675:54
faError: could not load client settings
```
Silence these in autosuggestions, such that they only show up when
explicitly invoking atuin.
* fix: `atuin.nu` enchancements (#2778)
* PR feedback
* Remove sqlite3 package
* fix(search): prevent panic on malformed format strings (#2776) (#2777)
* fix(search): prevent panic on malformed format strings (#2776)
- Wrap format operations in panic catcher for graceful error handling
- Improve error messages with context-aware guidance for common issues
- Let runtime-format parser handle validation to avoid blocking valid formats
Fixes crash when using malformed format strings by catching formatting
errors gracefully and providing actionable guidance without restricting
legitimate format patterns like {command} or {time}.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Satisfy cargo fmt
* test(search): add regression tests for format string panic (#2776)
- Add test for malformed JSON format strings that previously caused panics
- Add test to ensure valid format strings continue to work
- Prevent future regressions of the format string panic issue
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Koichi Murase <myoga.murase@gmail.com>
Co-authored-by: jyn <github@jyn.dev>
Co-authored-by: Tyarel8 <98483313+Tyarel8@users.noreply.github.com>
Co-authored-by: Brian Cosgrove <cosgroveb@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Diffstat (limited to 'crates/atuin-server-postgres')
| -rw-r--r-- | crates/atuin-server-postgres/Cargo.toml | 1 | ||||
| -rw-r--r-- | crates/atuin-server-postgres/src/lib.rs | 27 |
2 files changed, 2 insertions, 26 deletions
diff --git a/crates/atuin-server-postgres/Cargo.toml b/crates/atuin-server-postgres/Cargo.toml index 9eccca50..f5e472cb 100644 --- a/crates/atuin-server-postgres/Cargo.toml +++ b/crates/atuin-server-postgres/Cargo.toml @@ -22,4 +22,3 @@ async-trait = { workspace = true } uuid = { workspace = true } metrics = "0.21.1" futures-util = "0.3" -url = "2.5.2" diff --git a/crates/atuin-server-postgres/src/lib.rs b/crates/atuin-server-postgres/src/lib.rs index 7c6d8f9a..005e8765 100644 --- a/crates/atuin-server-postgres/src/lib.rs +++ b/crates/atuin-server-postgres/src/lib.rs @@ -1,15 +1,13 @@ use std::collections::HashMap; -use std::fmt::Debug; use std::ops::Range; use async_trait::async_trait; use atuin_common::record::{EncryptedData, HostId, Record, RecordIdx, RecordStatus}; use atuin_common::utils::crypto_random_string; use atuin_server_database::models::{History, NewHistory, NewSession, NewUser, Session, User}; -use atuin_server_database::{Database, DbError, DbResult}; +use atuin_server_database::{Database, DbError, DbResult, DbSettings}; use futures_util::TryStreamExt; use metrics::counter; -use serde::{Deserialize, Serialize}; use sqlx::Row; use sqlx::postgres::PgPoolOptions; @@ -27,26 +25,6 @@ pub struct Postgres { pool: sqlx::Pool<sqlx::postgres::Postgres>, } -#[derive(Clone, Deserialize, Serialize)] -pub struct PostgresSettings { - pub db_uri: String, -} - -// Do our best to redact passwords so they're not logged in the event of an error. -impl Debug for PostgresSettings { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - let redacted_uri = url::Url::parse(&self.db_uri) - .map(|mut url| { - let _ = url.set_password(Some("****")); - url.to_string() - }) - .unwrap_or(self.db_uri.clone()); - f.debug_struct("PostgresSettings") - .field("db_uri", &redacted_uri) - .finish() - } -} - fn fix_error(error: sqlx::Error) -> DbError { match error { sqlx::Error::RowNotFound => DbError::NotFound, @@ -56,8 +34,7 @@ fn fix_error(error: sqlx::Error) -> DbError { #[async_trait] impl Database for Postgres { - type Settings = PostgresSettings; - async fn new(settings: &PostgresSettings) -> DbResult<Self> { + async fn new(settings: &DbSettings) -> DbResult<Self> { let pool = PgPoolOptions::new() .max_connections(100) .connect(settings.db_uri.as_str()) |
