aboutsummaryrefslogtreecommitdiffstats
path: root/crates/atuin-server-sqlite
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-06-11 00:54:30 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-06-11 00:54:30 +0200
commit5c39e7cf284a1f6e9a1657f2deb44e359fc47eb8 (patch)
treec64baa8d5866c8e339eaf660dd3f94f30a3f7d8a /crates/atuin-server-sqlite
parentchore: Somewhat simplify sync code (diff)
downloadatuin-5c39e7cf284a1f6e9a1657f2deb44e359fc47eb8.zip
chore: Move everything into one big crate
That helps remove duplicated code and rustc/cargo will now also show dead code correctly.
Diffstat (limited to '')
-rw-r--r--crates/atuin-server-sqlite/Cargo.toml24
-rw-r--r--crates/atuin-server-sqlite/build.rs5
-rw-r--r--crates/atuin-server-sqlite/migrations/20231203124112_create-store.sql17
-rw-r--r--crates/atuin-server-sqlite/migrations/20240108124830_create-history.sql15
-rw-r--r--crates/atuin-server-sqlite/migrations/20240108124831_create-sessions.sql6
-rw-r--r--crates/atuin-server-sqlite/migrations/20240621110730_create-users.sql12
-rw-r--r--crates/atuin-server-sqlite/migrations/20240621110731_create-user-verification-token.sql6
-rw-r--r--crates/atuin-server-sqlite/migrations/20240702094825_create-store-idx-cache.sql10
-rw-r--r--crates/atuin-server-sqlite/migrations/20260127000000_remove-email-verification.sql2
-rw-r--r--crates/turtle/src/atuin_server_sqlite/mod.rs (renamed from crates/atuin-server-sqlite/src/lib.rs)16
-rw-r--r--crates/turtle/src/atuin_server_sqlite/wrappers.rs (renamed from crates/atuin-server-sqlite/src/wrappers.rs)4
11 files changed, 10 insertions, 107 deletions
diff --git a/crates/atuin-server-sqlite/Cargo.toml b/crates/atuin-server-sqlite/Cargo.toml
deleted file mode 100644
index 579a5e7e..00000000
--- a/crates/atuin-server-sqlite/Cargo.toml
+++ /dev/null
@@ -1,24 +0,0 @@
-[package]
-name = "atuin-server-sqlite"
-edition = "2024"
-description = "server sqlite database library for atuin"
-
-version = { workspace = true }
-authors = { workspace = true }
-license = { workspace = true }
-homepage = { workspace = true }
-repository = { workspace = true }
-
-[dependencies]
-atuin-common = { path = "../atuin-common", version = "18.16.1" }
-atuin-server-database = { path = "../atuin-server-database", version = "18.16.1" }
-
-eyre = { workspace = true }
-tracing = { workspace = true }
-time = { workspace = true }
-serde = { workspace = true }
-sqlx = { workspace = true, features = ["sqlite", "regexp"] }
-async-trait = { workspace = true }
-uuid = { workspace = true }
-metrics = "0.24"
-futures-util = "0.3"
diff --git a/crates/atuin-server-sqlite/build.rs b/crates/atuin-server-sqlite/build.rs
deleted file mode 100644
index d5068697..00000000
--- a/crates/atuin-server-sqlite/build.rs
+++ /dev/null
@@ -1,5 +0,0 @@
-// generated by `sqlx migrate build-script`
-fn main() {
- // trigger recompilation when a new migration is added
- println!("cargo:rerun-if-changed=migrations");
-}
diff --git a/crates/atuin-server-sqlite/migrations/20231203124112_create-store.sql b/crates/atuin-server-sqlite/migrations/20231203124112_create-store.sql
deleted file mode 100644
index ca19ed62..00000000
--- a/crates/atuin-server-sqlite/migrations/20231203124112_create-store.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-create table store (
- id text primary key, -- remember to use uuidv7 for happy indices <3
- client_id text not null, -- I am too uncomfortable with the idea of a client-generated primary key, even though it's fine mathematically
- host text not null, -- a unique identifier for the host
- idx bigint not null, -- the index of the record in this store, identified by (host, tag)
- timestamp bigint not null, -- not a timestamp type, as those do not have nanosecond precision
- version text not null,
- tag text not null, -- what is this? history, kv, whatever. Remember clients get a log per tag per host
- data text not null, -- store the actual history data, encrypted. I don't wanna know!
- cek text not null,
-
- user_id bigint not null, -- allow multiple users
- created_at timestamp not null default current_timestamp
-);
-
-create unique index record_uniq ON store(user_id, host, tag, idx);
-
diff --git a/crates/atuin-server-sqlite/migrations/20240108124830_create-history.sql b/crates/atuin-server-sqlite/migrations/20240108124830_create-history.sql
deleted file mode 100644
index 7bd653ba..00000000
--- a/crates/atuin-server-sqlite/migrations/20240108124830_create-history.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-create table history (
- id integer primary key autoincrement,
- client_id text not null unique, -- the client-generated ID
- user_id bigserial not null, -- allow multiple users
- hostname text not null, -- a unique identifier from the client (can be hashed, random, whatever)
- timestamp timestamp not null, -- one of the few non-encrypted metadatas
-
- data text not null, -- store the actual history data, encrypted. I don't wanna know!
-
- created_at timestamp not null default current_timestamp,
- deleted_at timestamp
-);
-
-create unique index history_deleted_index on history(client_id, user_id, deleted_at);
-
diff --git a/crates/atuin-server-sqlite/migrations/20240108124831_create-sessions.sql b/crates/atuin-server-sqlite/migrations/20240108124831_create-sessions.sql
deleted file mode 100644
index 3120c35d..00000000
--- a/crates/atuin-server-sqlite/migrations/20240108124831_create-sessions.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-create table sessions (
- id integer primary key autoincrement,
- user_id integer,
- token text unique not null
-);
-
diff --git a/crates/atuin-server-sqlite/migrations/20240621110730_create-users.sql b/crates/atuin-server-sqlite/migrations/20240621110730_create-users.sql
deleted file mode 100644
index 852c159d..00000000
--- a/crates/atuin-server-sqlite/migrations/20240621110730_create-users.sql
+++ /dev/null
@@ -1,12 +0,0 @@
-create table users (
- id integer primary key autoincrement, -- also store our own ID
- username text not null unique, -- being able to contact users is useful
- email text not null unique, -- being able to contact users is useful
- password text not null unique,
- created_at timestamp not null default (datetime('now','localtime')),
- verified_at timestamp with time zone default null
-);
-
--- the prior index is case sensitive :(
-CREATE UNIQUE INDEX email_unique_idx on users (LOWER(email));
-CREATE UNIQUE INDEX username_unique_idx on users (LOWER(username));
diff --git a/crates/atuin-server-sqlite/migrations/20240621110731_create-user-verification-token.sql b/crates/atuin-server-sqlite/migrations/20240621110731_create-user-verification-token.sql
deleted file mode 100644
index 36eb14de..00000000
--- a/crates/atuin-server-sqlite/migrations/20240621110731_create-user-verification-token.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-create table user_verification_token(
- id integer primary key autoincrement,
- user_id bigint unique references users(id),
- token text,
- valid_until timestamp with time zone
-);
diff --git a/crates/atuin-server-sqlite/migrations/20240702094825_create-store-idx-cache.sql b/crates/atuin-server-sqlite/migrations/20240702094825_create-store-idx-cache.sql
deleted file mode 100644
index cd54cb18..00000000
--- a/crates/atuin-server-sqlite/migrations/20240702094825_create-store-idx-cache.sql
+++ /dev/null
@@ -1,10 +0,0 @@
-create table store_idx_cache(
- id integer primary key autoincrement,
- user_id bigint,
-
- host uuid,
- tag text,
- idx bigint
-);
-
-create unique index store_idx_cache_uniq on store_idx_cache(user_id, host, tag);
diff --git a/crates/atuin-server-sqlite/migrations/20260127000000_remove-email-verification.sql b/crates/atuin-server-sqlite/migrations/20260127000000_remove-email-verification.sql
deleted file mode 100644
index 0bde89d7..00000000
--- a/crates/atuin-server-sqlite/migrations/20260127000000_remove-email-verification.sql
+++ /dev/null
@@ -1,2 +0,0 @@
-drop table if exists user_verification_token;
-alter table users drop column verified_at;
diff --git a/crates/atuin-server-sqlite/src/lib.rs b/crates/turtle/src/atuin_server_sqlite/mod.rs
index 56ed9b6c..3470a2f1 100644
--- a/crates/atuin-server-sqlite/src/lib.rs
+++ b/crates/turtle/src/atuin_server_sqlite/mod.rs
@@ -1,11 +1,11 @@
use std::str::FromStr;
-use async_trait::async_trait;
-use atuin_common::record::{EncryptedData, HostId, Record, RecordIdx, RecordStatus};
-use atuin_server_database::{
+use crate::atuin_common::record::{EncryptedData, HostId, Record, RecordIdx, RecordStatus};
+use crate::atuin_server_database::{
Database, DbError, DbResult, DbSettings, into_utc,
models::{History, NewHistory, NewSession, NewUser, Session, User},
};
+use async_trait::async_trait;
use futures_util::TryStreamExt;
use sqlx::{
Row,
@@ -203,7 +203,7 @@ impl Database for Sqlite {
// edge case.
let res = sqlx::query(
- "select client_id from history
+ "select client_id from history
where user_id = $1
and deleted_at is not null",
)
@@ -233,11 +233,11 @@ impl Database for Sqlite {
let mut tx = self.pool.begin().await?;
for i in records {
- let id = atuin_common::utils::uuid_v7();
+ let id = crate::atuin_common::utils::uuid_v7();
sqlx::query(
"insert into store
- (id, client_id, host, idx, timestamp, version, tag, data, cek, user_id)
+ (id, client_id, host, idx, timestamp, version, tag, data, cek, user_id)
values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)
on conflict do nothing
",
@@ -394,7 +394,7 @@ impl Database for Sqlite {
sqlx::query(
"insert into history
- (client_id, user_id, hostname, timestamp, data)
+ (client_id, user_id, hostname, timestamp, data)
values ($1, $2, $3, $4, $5)
on conflict do nothing
",
@@ -416,7 +416,7 @@ impl Database for Sqlite {
#[instrument(skip_all)]
async fn oldest_history(&self, user: &User) -> DbResult<History> {
sqlx::query_as(
- "select id, client_id, user_id, hostname, timestamp, data, created_at from history
+ "select id, client_id, user_id, hostname, timestamp, data, created_at from history
where user_id = $1
order by timestamp asc
limit 1",
diff --git a/crates/atuin-server-sqlite/src/wrappers.rs b/crates/turtle/src/atuin_server_sqlite/wrappers.rs
index 2f1230c2..5aa7a982 100644
--- a/crates/atuin-server-sqlite/src/wrappers.rs
+++ b/crates/turtle/src/atuin_server_sqlite/wrappers.rs
@@ -1,6 +1,6 @@
use ::sqlx::{FromRow, Result};
-use atuin_common::record::{EncryptedData, Host, Record};
-use atuin_server_database::models::{History, Session, User};
+use crate::atuin_common::record::{EncryptedData, Host, Record};
+use crate::atuin_server_database::models::{History, Session, User};
use sqlx::{Row, sqlite::SqliteRow};
pub struct DbUser(pub User);