aboutsummaryrefslogtreecommitdiffstats
path: root/crates/atuin-server
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
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-database/Cargo.toml21
-rw-r--r--crates/atuin-server-postgres/Cargo.toml25
-rw-r--r--crates/atuin-server-postgres/build.rs5
-rw-r--r--crates/atuin-server-postgres/migrations/20210425153745_create_history.sql11
-rw-r--r--crates/atuin-server-postgres/migrations/20210425153757_create_users.sql10
-rw-r--r--crates/atuin-server-postgres/migrations/20210425153800_create_sessions.sql6
-rw-r--r--crates/atuin-server-postgres/migrations/20220419082412_add_count_trigger.sql51
-rw-r--r--crates/atuin-server-postgres/migrations/20220421073605_fix_count_trigger_delete.sql35
-rw-r--r--crates/atuin-server-postgres/migrations/20220421174016_larger-commands.sql3
-rw-r--r--crates/atuin-server-postgres/migrations/20220426172813_user-created-at.sql1
-rw-r--r--crates/atuin-server-postgres/migrations/20220505082442_create-events.sql14
-rw-r--r--crates/atuin-server-postgres/migrations/20220610074049_history-length.sql2
-rw-r--r--crates/atuin-server-postgres/migrations/20230315220537_drop-events.sql2
-rw-r--r--crates/atuin-server-postgres/migrations/20230315224203_create-deleted.sql5
-rw-r--r--crates/atuin-server-postgres/migrations/20230515221038_trigger-delete-only.sql30
-rw-r--r--crates/atuin-server-postgres/migrations/20230623070418_records.sql15
-rw-r--r--crates/atuin-server-postgres/migrations/20231202170508_create-store.sql15
-rw-r--r--crates/atuin-server-postgres/migrations/20231203124112_create-store-idx.sql2
-rw-r--r--crates/atuin-server-postgres/migrations/20240108124837_drop-some-defaults.sql4
-rw-r--r--crates/atuin-server-postgres/migrations/20240614104159_idx-cache.sql8
-rw-r--r--crates/atuin-server-postgres/migrations/20240621110731_user-verified.sql8
-rw-r--r--crates/atuin-server-postgres/migrations/20240702094825_idx_cache_index.sql1
-rw-r--r--crates/atuin-server-postgres/migrations/20260127000000_remove-email-verification.sql2
-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
l---------crates/atuin-server/CHANGELOG.md1
-rw-r--r--crates/atuin-server/Cargo.toml45
-rw-r--r--crates/atuin-server/server.toml38
-rw-r--r--crates/atuin-server/src/bin/main.rs73
-rw-r--r--crates/turtle/src/atuin_server/handlers/health.rs (renamed from crates/atuin-server/src/handlers/health.rs)0
-rw-r--r--crates/turtle/src/atuin_server/handlers/history.rs (renamed from crates/atuin-server/src/handlers/history.rs)6
-rw-r--r--crates/turtle/src/atuin_server/handlers/mod.rs (renamed from crates/atuin-server/src/handlers/mod.rs)6
-rw-r--r--crates/turtle/src/atuin_server/handlers/record.rs (renamed from crates/atuin-server/src/handlers/record.rs)4
-rw-r--r--crates/turtle/src/atuin_server/handlers/status.rs (renamed from crates/atuin-server/src/handlers/status.rs)6
-rw-r--r--crates/turtle/src/atuin_server/handlers/user.rs (renamed from crates/atuin-server/src/handlers/user.rs)8
-rw-r--r--crates/turtle/src/atuin_server/handlers/v0/me.rs (renamed from crates/atuin-server/src/handlers/v0/me.rs)6
-rw-r--r--crates/turtle/src/atuin_server/handlers/v0/mod.rs (renamed from crates/atuin-server/src/handlers/v0/mod.rs)0
-rw-r--r--crates/turtle/src/atuin_server/handlers/v0/record.rs (renamed from crates/atuin-server/src/handlers/v0/record.rs)6
-rw-r--r--crates/turtle/src/atuin_server/handlers/v0/store.rs (renamed from crates/atuin-server/src/handlers/v0/store.rs)4
-rw-r--r--crates/turtle/src/atuin_server/metrics.rs (renamed from crates/atuin-server/src/metrics.rs)0
-rw-r--r--crates/turtle/src/atuin_server/mod.rs (renamed from crates/atuin-server/src/lib.rs)5
-rw-r--r--crates/turtle/src/atuin_server/router.rs (renamed from crates/atuin-server/src/router.rs)6
-rw-r--r--crates/turtle/src/atuin_server/settings.rs (renamed from crates/atuin-server/src/settings.rs)31
-rw-r--r--crates/turtle/src/atuin_server/utils.rs (renamed from crates/atuin-server/src/utils.rs)0
-rw-r--r--crates/turtle/src/atuin_server_database/calendar.rs (renamed from crates/atuin-server-database/src/calendar.rs)0
-rw-r--r--crates/turtle/src/atuin_server_database/mod.rs (renamed from crates/atuin-server-database/src/lib.rs)4
-rw-r--r--crates/turtle/src/atuin_server_database/models.rs (renamed from crates/atuin-server-database/src/models.rs)0
-rw-r--r--crates/turtle/src/atuin_server_postgres/mod.rs (renamed from crates/atuin-server-postgres/src/lib.rs)16
-rw-r--r--crates/turtle/src/atuin_server_postgres/wrappers.rs (renamed from crates/atuin-server-postgres/src/wrappers.rs)4
-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
58 files changed, 63 insertions, 599 deletions
diff --git a/crates/atuin-server-database/Cargo.toml b/crates/atuin-server-database/Cargo.toml
deleted file mode 100644
index 52ccbf97..00000000
--- a/crates/atuin-server-database/Cargo.toml
+++ /dev/null
@@ -1,21 +0,0 @@
-[package]
-name = "atuin-server-database"
-edition = "2024"
-description = "server 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" }
-
-async-trait = { workspace = true }
-eyre = { workspace = true }
-serde = { workspace = true }
-sqlx = { workspace = true }
-time = { workspace = true }
-tracing = { workspace = true }
-url = "2.5.2"
diff --git a/crates/atuin-server-postgres/Cargo.toml b/crates/atuin-server-postgres/Cargo.toml
deleted file mode 100644
index ea19899e..00000000
--- a/crates/atuin-server-postgres/Cargo.toml
+++ /dev/null
@@ -1,25 +0,0 @@
-[package]
-name = "atuin-server-postgres"
-edition = "2024"
-description = "server postgres 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 }
-async-trait = { workspace = true }
-uuid = { workspace = true }
-metrics = "0.24"
-futures-util = "0.3"
-rand.workspace = true \ No newline at end of file
diff --git a/crates/atuin-server-postgres/build.rs b/crates/atuin-server-postgres/build.rs
deleted file mode 100644
index d5068697..00000000
--- a/crates/atuin-server-postgres/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-postgres/migrations/20210425153745_create_history.sql b/crates/atuin-server-postgres/migrations/20210425153745_create_history.sql
deleted file mode 100644
index 2c2d17b0..00000000
--- a/crates/atuin-server-postgres/migrations/20210425153745_create_history.sql
+++ /dev/null
@@ -1,11 +0,0 @@
-create table history (
- id bigserial primary key,
- 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 varchar(8192) not null, -- store the actual history data, encrypted. I don't wanna know!
-
- created_at timestamp not null default current_timestamp
-);
diff --git a/crates/atuin-server-postgres/migrations/20210425153757_create_users.sql b/crates/atuin-server-postgres/migrations/20210425153757_create_users.sql
deleted file mode 100644
index a25dcced..00000000
--- a/crates/atuin-server-postgres/migrations/20210425153757_create_users.sql
+++ /dev/null
@@ -1,10 +0,0 @@
-create table users (
- id bigserial primary key, -- also store our own ID
- username varchar(32) not null unique, -- being able to contact users is useful
- email varchar(128) not null unique, -- being able to contact users is useful
- password varchar(128) not null unique
-);
-
--- 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-postgres/migrations/20210425153800_create_sessions.sql b/crates/atuin-server-postgres/migrations/20210425153800_create_sessions.sql
deleted file mode 100644
index c2fb6559..00000000
--- a/crates/atuin-server-postgres/migrations/20210425153800_create_sessions.sql
+++ /dev/null
@@ -1,6 +0,0 @@
--- Add migration script here
-create table sessions (
- id bigserial primary key,
- user_id bigserial,
- token varchar(128) unique not null
-);
diff --git a/crates/atuin-server-postgres/migrations/20220419082412_add_count_trigger.sql b/crates/atuin-server-postgres/migrations/20220419082412_add_count_trigger.sql
deleted file mode 100644
index dd1afa88..00000000
--- a/crates/atuin-server-postgres/migrations/20220419082412_add_count_trigger.sql
+++ /dev/null
@@ -1,51 +0,0 @@
--- Prior to this, the count endpoint was super naive and just ran COUNT(1).
--- This is slow asf. Now that we have an amount of actual traffic,
--- stop doing that!
--- This basically maintains a count, so we can read ONE row, instead of ALL the
--- rows. Much better.
--- Future optimisation could use some sort of cache so we don't even need to hit
--- postgres at all.
-
-create table total_history_count_user(
- id bigserial primary key,
- user_id bigserial,
- total integer -- try and avoid using keywords - hence total, not count
-);
-
-create or replace function user_history_count()
-returns trigger as
-$func$
-begin
- if (TG_OP='INSERT') then
- update total_history_count_user set total = total + 1 where user_id = new.user_id;
-
- if not found then
- insert into total_history_count_user(user_id, total)
- values (
- new.user_id,
- (select count(1) from history where user_id = new.user_id)
- );
- end if;
-
- elsif (TG_OP='DELETE') then
- update total_history_count_user set total = total - 1 where user_id = new.user_id;
-
- if not found then
- insert into total_history_count_user(user_id, total)
- values (
- new.user_id,
- (select count(1) from history where user_id = new.user_id)
- );
- end if;
- end if;
-
- return NEW; -- this is actually ignored for an after trigger, but oh well
-end;
-$func$
-language plpgsql volatile -- pldfplplpflh
-cost 100; -- default value
-
-create trigger tg_user_history_count
- after insert or delete on history
- for each row
- execute procedure user_history_count();
diff --git a/crates/atuin-server-postgres/migrations/20220421073605_fix_count_trigger_delete.sql b/crates/atuin-server-postgres/migrations/20220421073605_fix_count_trigger_delete.sql
deleted file mode 100644
index 6198f300..00000000
--- a/crates/atuin-server-postgres/migrations/20220421073605_fix_count_trigger_delete.sql
+++ /dev/null
@@ -1,35 +0,0 @@
--- the old version of this function used NEW in the delete part when it should
--- use OLD
-
-create or replace function user_history_count()
-returns trigger as
-$func$
-begin
- if (TG_OP='INSERT') then
- update total_history_count_user set total = total + 1 where user_id = new.user_id;
-
- if not found then
- insert into total_history_count_user(user_id, total)
- values (
- new.user_id,
- (select count(1) from history where user_id = new.user_id)
- );
- end if;
-
- elsif (TG_OP='DELETE') then
- update total_history_count_user set total = total - 1 where user_id = old.user_id;
-
- if not found then
- insert into total_history_count_user(user_id, total)
- values (
- old.user_id,
- (select count(1) from history where user_id = old.user_id)
- );
- end if;
- end if;
-
- return NEW; -- this is actually ignored for an after trigger, but oh well
-end;
-$func$
-language plpgsql volatile -- pldfplplpflh
-cost 100; -- default value
diff --git a/crates/atuin-server-postgres/migrations/20220421174016_larger-commands.sql b/crates/atuin-server-postgres/migrations/20220421174016_larger-commands.sql
deleted file mode 100644
index 0ac43433..00000000
--- a/crates/atuin-server-postgres/migrations/20220421174016_larger-commands.sql
+++ /dev/null
@@ -1,3 +0,0 @@
--- Make it 4x larger. Most commands are less than this, but as it's base64
--- SOME are more than 8192. Should be enough for now.
-ALTER TABLE history ALTER COLUMN data TYPE varchar(32768);
diff --git a/crates/atuin-server-postgres/migrations/20220426172813_user-created-at.sql b/crates/atuin-server-postgres/migrations/20220426172813_user-created-at.sql
deleted file mode 100644
index a9138194..00000000
--- a/crates/atuin-server-postgres/migrations/20220426172813_user-created-at.sql
+++ /dev/null
@@ -1 +0,0 @@
-alter table users add column created_at timestamp not null default now();
diff --git a/crates/atuin-server-postgres/migrations/20220505082442_create-events.sql b/crates/atuin-server-postgres/migrations/20220505082442_create-events.sql
deleted file mode 100644
index 57e16ec7..00000000
--- a/crates/atuin-server-postgres/migrations/20220505082442_create-events.sql
+++ /dev/null
@@ -1,14 +0,0 @@
-create type event_type as enum ('create', 'delete');
-
-create table events (
- id bigserial primary key,
- 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
-
- event_type event_type,
- data text not null, -- store the actual history data, encrypted. I don't wanna know!
-
- created_at timestamp not null default current_timestamp
-);
diff --git a/crates/atuin-server-postgres/migrations/20220610074049_history-length.sql b/crates/atuin-server-postgres/migrations/20220610074049_history-length.sql
deleted file mode 100644
index b1c23016..00000000
--- a/crates/atuin-server-postgres/migrations/20220610074049_history-length.sql
+++ /dev/null
@@ -1,2 +0,0 @@
--- Add migration script here
-alter table history alter column data type text;
diff --git a/crates/atuin-server-postgres/migrations/20230315220537_drop-events.sql b/crates/atuin-server-postgres/migrations/20230315220537_drop-events.sql
deleted file mode 100644
index fe3cae17..00000000
--- a/crates/atuin-server-postgres/migrations/20230315220537_drop-events.sql
+++ /dev/null
@@ -1,2 +0,0 @@
--- Add migration script here
-drop table events;
diff --git a/crates/atuin-server-postgres/migrations/20230315224203_create-deleted.sql b/crates/atuin-server-postgres/migrations/20230315224203_create-deleted.sql
deleted file mode 100644
index 9a9e6263..00000000
--- a/crates/atuin-server-postgres/migrations/20230315224203_create-deleted.sql
+++ /dev/null
@@ -1,5 +0,0 @@
--- Add migration script here
-alter table history add column if not exists deleted_at timestamp;
-
--- queries will all be selecting the ids of history for a user, that has been deleted
-create index if not exists history_deleted_index on history(client_id, user_id, deleted_at);
diff --git a/crates/atuin-server-postgres/migrations/20230515221038_trigger-delete-only.sql b/crates/atuin-server-postgres/migrations/20230515221038_trigger-delete-only.sql
deleted file mode 100644
index 3d0bba52..00000000
--- a/crates/atuin-server-postgres/migrations/20230515221038_trigger-delete-only.sql
+++ /dev/null
@@ -1,30 +0,0 @@
--- We do not need to run the trigger on deletes, as the only time we are deleting history is when the user
--- has already been deleted
--- This actually slows down deleting all the history a good bit!
-
-create or replace function user_history_count()
-returns trigger as
-$func$
-begin
- if (TG_OP='INSERT') then
- update total_history_count_user set total = total + 1 where user_id = new.user_id;
-
- if not found then
- insert into total_history_count_user(user_id, total)
- values (
- new.user_id,
- (select count(1) from history where user_id = new.user_id)
- );
- end if;
- end if;
-
- return NEW; -- this is actually ignored for an after trigger, but oh well
-end;
-$func$
-language plpgsql volatile -- pldfplplpflh
-cost 100; -- default value
-
-create or replace trigger tg_user_history_count
- after insert on history
- for each row
- execute procedure user_history_count();
diff --git a/crates/atuin-server-postgres/migrations/20230623070418_records.sql b/crates/atuin-server-postgres/migrations/20230623070418_records.sql
deleted file mode 100644
index 22437595..00000000
--- a/crates/atuin-server-postgres/migrations/20230623070418_records.sql
+++ /dev/null
@@ -1,15 +0,0 @@
--- Add migration script here
-create table records (
- id uuid primary key, -- remember to use uuidv7 for happy indices <3
- client_id uuid not null, -- I am too uncomfortable with the idea of a client-generated primary key
- host uuid not null, -- a unique identifier for the host
- parent uuid default null, -- the ID of the parent record, bearing in mind this is a linked list
- 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
-);
diff --git a/crates/atuin-server-postgres/migrations/20231202170508_create-store.sql b/crates/atuin-server-postgres/migrations/20231202170508_create-store.sql
deleted file mode 100644
index ffb57966..00000000
--- a/crates/atuin-server-postgres/migrations/20231202170508_create-store.sql
+++ /dev/null
@@ -1,15 +0,0 @@
--- Add migration script here
-create table store (
- id uuid primary key, -- remember to use uuidv7 for happy indices <3
- client_id uuid not null, -- I am too uncomfortable with the idea of a client-generated primary key, even though it's fine mathematically
- host uuid 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
-);
diff --git a/crates/atuin-server-postgres/migrations/20231203124112_create-store-idx.sql b/crates/atuin-server-postgres/migrations/20231203124112_create-store-idx.sql
deleted file mode 100644
index 56d67145..00000000
--- a/crates/atuin-server-postgres/migrations/20231203124112_create-store-idx.sql
+++ /dev/null
@@ -1,2 +0,0 @@
--- Add migration script here
-create unique index record_uniq ON store(user_id, host, tag, idx);
diff --git a/crates/atuin-server-postgres/migrations/20240108124837_drop-some-defaults.sql b/crates/atuin-server-postgres/migrations/20240108124837_drop-some-defaults.sql
deleted file mode 100644
index ad2af5a1..00000000
--- a/crates/atuin-server-postgres/migrations/20240108124837_drop-some-defaults.sql
+++ /dev/null
@@ -1,4 +0,0 @@
--- Add migration script here
-alter table history alter column user_id drop default;
-alter table sessions alter column user_id drop default;
-alter table total_history_count_user alter column user_id drop default;
diff --git a/crates/atuin-server-postgres/migrations/20240614104159_idx-cache.sql b/crates/atuin-server-postgres/migrations/20240614104159_idx-cache.sql
deleted file mode 100644
index 76425ed7..00000000
--- a/crates/atuin-server-postgres/migrations/20240614104159_idx-cache.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-create table store_idx_cache(
- id bigserial primary key,
- user_id bigint,
-
- host uuid,
- tag text,
- idx bigint
-);
diff --git a/crates/atuin-server-postgres/migrations/20240621110731_user-verified.sql b/crates/atuin-server-postgres/migrations/20240621110731_user-verified.sql
deleted file mode 100644
index 6eba02ec..00000000
--- a/crates/atuin-server-postgres/migrations/20240621110731_user-verified.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-alter table users add verified_at timestamp with time zone default null;
-
-create table user_verification_token(
- id bigserial primary key,
- user_id bigint unique references users(id),
- token text,
- valid_until timestamp with time zone
-);
diff --git a/crates/atuin-server-postgres/migrations/20240702094825_idx_cache_index.sql b/crates/atuin-server-postgres/migrations/20240702094825_idx_cache_index.sql
deleted file mode 100644
index d1a7b194..00000000
--- a/crates/atuin-server-postgres/migrations/20240702094825_idx_cache_index.sql
+++ /dev/null
@@ -1 +0,0 @@
-create unique index store_idx_cache_uniq on store_idx_cache(user_id, host, tag);
diff --git a/crates/atuin-server-postgres/migrations/20260127000000_remove-email-verification.sql b/crates/atuin-server-postgres/migrations/20260127000000_remove-email-verification.sql
deleted file mode 100644
index 15309920..00000000
--- a/crates/atuin-server-postgres/migrations/20260127000000_remove-email-verification.sql
+++ /dev/null
@@ -1,2 +0,0 @@
-drop table if exists user_verification_token;
-alter table users drop column if exists verified_at;
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/CHANGELOG.md b/crates/atuin-server/CHANGELOG.md
deleted file mode 120000
index 699cc9e7..00000000
--- a/crates/atuin-server/CHANGELOG.md
+++ /dev/null
@@ -1 +0,0 @@
-../../CHANGELOG.md \ No newline at end of file
diff --git a/crates/atuin-server/Cargo.toml b/crates/atuin-server/Cargo.toml
deleted file mode 100644
index b7779899..00000000
--- a/crates/atuin-server/Cargo.toml
+++ /dev/null
@@ -1,45 +0,0 @@
-[package]
-name = "atuin-server"
-edition = "2024"
-description = "server library for atuin"
-
-rust-version = { workspace = true }
-version = { workspace = true }
-authors = { workspace = true }
-license = { workspace = true }
-homepage = { workspace = true }
-repository = { workspace = true }
-
-[lib]
-name = "atuin_server"
-path = "src/lib.rs"
-
-[[bin]]
-name = "atuin-server"
-path = "src/bin/main.rs"
-
-[dependencies]
-atuin-common = { workspace = true }
-atuin-server-database = { workspace = true }
-atuin-server-postgres = { workspace = true }
-atuin-server-sqlite = { workspace = true }
-
-tracing = { workspace = true }
-time = { workspace = true }
-eyre = { workspace = true }
-config = { workspace = true }
-serde = { workspace = true }
-serde_json = { workspace = true }
-rand = { workspace = true }
-tokio = { workspace = true }
-axum = "0.8"
-fs-err = { workspace = true }
-tower = { workspace = true }
-tower-http = { version = "0.6", features = ["trace"] }
-reqwest = { workspace = true }
-argon2 = "0.5"
-semver = { workspace = true }
-metrics-exporter-prometheus = { version = "0.18", default-features = false }
-metrics = "0.24"
-clap = { workspace = true }
-tracing-subscriber = { workspace = true }
diff --git a/crates/atuin-server/server.toml b/crates/atuin-server/server.toml
deleted file mode 100644
index 9ff95890..00000000
--- a/crates/atuin-server/server.toml
+++ /dev/null
@@ -1,38 +0,0 @@
-## host to bind, can also be passed via CLI args
-# host = "127.0.0.1"
-
-## port to bind, can also be passed via CLI args
-# port = 8888
-
-## whether to allow anyone to register an account
-# open_registration = false
-
-## URI for postgres (using development creds here)
-# db_uri="postgres://username:password@localhost/atuin"
-# db_uri="sqlite:///config/atuin-server.db"
-
-## Optional: URI for read replica database
-## If set, read-only queries will be routed to this database
-# read_db_uri="postgres://username:password@localhost-replica/atuin"
-
-## Maximum size for one history entry
-# max_history_length = 8192
-
-## Maximum size for one record entry
-## 1024 * 1024 * 1024
-# max_record_size = 1073741824
-
-## Webhook to be called when user registers on the servers
-# register_webhook_username = ""
-
-## Default page size for requests
-# page_size = 1100
-
-# [metrics]
-# enable = false
-# host = 127.0.0.1
-# port = 9001
-
-## Enable legacy sync v1 routes (history-based sync)
-## Set to false to disable and use only the newer record-based sync
-# sync_v1_enabled = true
diff --git a/crates/atuin-server/src/bin/main.rs b/crates/atuin-server/src/bin/main.rs
deleted file mode 100644
index 960bdf6e..00000000
--- a/crates/atuin-server/src/bin/main.rs
+++ /dev/null
@@ -1,73 +0,0 @@
-#![forbid(unsafe_code)]
-
-use std::net::SocketAddr;
-
-use atuin_server::{Settings, example_config, launch, launch_metrics_server};
-use atuin_server_database::DbType;
-use atuin_server_postgres::Postgres;
-use atuin_server_sqlite::Sqlite;
-
-use clap::Parser;
-use eyre::{Context, Result, eyre};
-use tracing_subscriber::{EnvFilter, fmt, prelude::*};
-
-#[derive(Parser, Debug)]
-#[clap(
- name = "atuin-server",
- about = "Atuin sync server",
- version,
- infer_subcommands = true
-)]
-enum Cmd {
- /// Start the server
- Start {
- /// The host address to bind
- #[clap(long)]
- host: Option<String>,
-
- /// The port to bind
- #[clap(long, short)]
- port: Option<u16>,
- },
-
- /// Print server example configuration
- DefaultConfig,
-}
-
-#[tokio::main]
-async fn main() -> Result<()> {
- let cmd = Cmd::parse();
-
- tracing_subscriber::registry()
- .with(fmt::layer())
- .with(EnvFilter::from_default_env())
- .init();
-
- tracing::trace!(command = ?cmd, "server command");
-
- match cmd {
- Cmd::Start { host, port } => {
- let settings = Settings::new().wrap_err("could not load server settings")?;
- let host = host.as_ref().unwrap_or(&settings.host).clone();
- let port = port.unwrap_or(settings.port);
- let addr = SocketAddr::new(host.parse()?, port);
-
- if settings.metrics.enable {
- tokio::spawn(launch_metrics_server(
- settings.metrics.host.clone(),
- settings.metrics.port,
- ));
- }
-
- match settings.db_settings.db_type() {
- DbType::Postgres => launch::<Postgres>(settings, addr).await,
- DbType::Sqlite => launch::<Sqlite>(settings, addr).await,
- DbType::Unknown => Err(eyre!("db_uri must start with postgres:// or sqlite://")),
- }
- }
- Cmd::DefaultConfig => {
- println!("{}", example_config());
- Ok(())
- }
- }
-}
diff --git a/crates/atuin-server/src/handlers/health.rs b/crates/turtle/src/atuin_server/handlers/health.rs
index aebd1e8f..aebd1e8f 100644
--- a/crates/atuin-server/src/handlers/health.rs
+++ b/crates/turtle/src/atuin_server/handlers/health.rs
diff --git a/crates/atuin-server/src/handlers/history.rs b/crates/turtle/src/atuin_server/handlers/history.rs
index bdafcc60..7f09161b 100644
--- a/crates/atuin-server/src/handlers/history.rs
+++ b/crates/turtle/src/atuin_server/handlers/history.rs
@@ -10,17 +10,17 @@ use time::{Month, UtcOffset};
use tracing::{debug, error, instrument};
use super::{ErrorResponse, ErrorResponseStatus, RespExt};
-use crate::{
+use crate::atuin_server::{
router::{AppState, UserAuth},
utils::client_version_min,
};
-use atuin_server_database::{
+use crate::atuin_server_database::{
Database,
calendar::{TimePeriod, TimePeriodInfo},
models::NewHistory,
};
-use atuin_common::api::*;
+use crate::atuin_common::api::*;
#[instrument(skip_all, fields(user.id = user.id))]
pub async fn count<DB: Database>(
diff --git a/crates/atuin-server/src/handlers/mod.rs b/crates/turtle/src/atuin_server/handlers/mod.rs
index 2176ac5e..7722d03e 100644
--- a/crates/atuin-server/src/handlers/mod.rs
+++ b/crates/turtle/src/atuin_server/handlers/mod.rs
@@ -1,8 +1,8 @@
-use atuin_common::api::{ErrorResponse, IndexResponse};
-use atuin_server_database::Database;
+use crate::atuin_common::api::{ErrorResponse, IndexResponse};
+use crate::atuin_server_database::Database;
use axum::{Json, extract::State, http, response::IntoResponse};
-use crate::router::AppState;
+use crate::atuin_server::router::AppState;
pub mod health;
pub mod history;
diff --git a/crates/atuin-server/src/handlers/record.rs b/crates/turtle/src/atuin_server/handlers/record.rs
index 410c54bd..63325606 100644
--- a/crates/atuin-server/src/handlers/record.rs
+++ b/crates/turtle/src/atuin_server/handlers/record.rs
@@ -3,9 +3,9 @@ use serde_json::json;
use tracing::instrument;
use super::{ErrorResponse, ErrorResponseStatus, RespExt};
-use crate::router::UserAuth;
+use crate::atuin_server::router::UserAuth;
-use atuin_common::record::{EncryptedData, Record};
+use crate::atuin_common::record::{EncryptedData, Record};
#[instrument(skip_all, fields(user.id = user.id))]
pub async fn post(UserAuth(user): UserAuth) -> Result<(), ErrorResponseStatus<'static>> {
diff --git a/crates/atuin-server/src/handlers/status.rs b/crates/turtle/src/atuin_server/handlers/status.rs
index 9c152d51..0cf2ca1e 100644
--- a/crates/atuin-server/src/handlers/status.rs
+++ b/crates/turtle/src/atuin_server/handlers/status.rs
@@ -2,10 +2,10 @@ use axum::{Json, extract::State, http::StatusCode};
use tracing::instrument;
use super::{ErrorResponse, ErrorResponseStatus, RespExt};
-use crate::router::{AppState, UserAuth};
-use atuin_server_database::Database;
+use crate::atuin_server::router::{AppState, UserAuth};
+use crate::atuin_server_database::Database;
-use atuin_common::api::*;
+use crate::atuin_common::api::*;
const VERSION: &str = env!("CARGO_PKG_VERSION");
diff --git a/crates/atuin-server/src/handlers/user.rs b/crates/turtle/src/atuin_server/handlers/user.rs
index dda7a381..01b72202 100644
--- a/crates/atuin-server/src/handlers/user.rs
+++ b/crates/turtle/src/atuin_server/handlers/user.rs
@@ -16,18 +16,18 @@ use metrics::counter;
use rand::rngs::OsRng;
use tracing::{debug, error, info, instrument};
-use atuin_common::tls::ensure_crypto_provider;
+use crate::atuin_common::tls::ensure_crypto_provider;
use super::{ErrorResponse, ErrorResponseStatus, RespExt};
-use crate::router::{AppState, UserAuth};
-use atuin_server_database::{
+use crate::atuin_server::router::{AppState, UserAuth};
+use crate::atuin_server_database::{
Database, DbError,
models::{NewSession, NewUser},
};
use reqwest::header::CONTENT_TYPE;
-use atuin_common::{api::*, utils::crypto_random_string};
+use crate::atuin_common::{api::*, utils::crypto_random_string};
pub fn verify_str(hash: &str, password: &str) -> bool {
let arg2 = Argon2::new(Algorithm::Argon2id, Version::V0x13, Params::default());
diff --git a/crates/atuin-server/src/handlers/v0/me.rs b/crates/turtle/src/atuin_server/handlers/v0/me.rs
index 7960b479..a1e2db46 100644
--- a/crates/atuin-server/src/handlers/v0/me.rs
+++ b/crates/turtle/src/atuin_server/handlers/v0/me.rs
@@ -1,10 +1,10 @@
use axum::Json;
use tracing::instrument;
-use crate::handlers::ErrorResponseStatus;
-use crate::router::UserAuth;
+use crate::atuin_server::handlers::ErrorResponseStatus;
+use crate::atuin_server::router::UserAuth;
-use atuin_common::api::*;
+use crate::atuin_common::api::*;
#[instrument(skip_all, fields(user.id = user.id))]
pub async fn get(
diff --git a/crates/atuin-server/src/handlers/v0/mod.rs b/crates/turtle/src/atuin_server/handlers/v0/mod.rs
index d6f880f2..d6f880f2 100644
--- a/crates/atuin-server/src/handlers/v0/mod.rs
+++ b/crates/turtle/src/atuin_server/handlers/v0/mod.rs
diff --git a/crates/atuin-server/src/handlers/v0/record.rs b/crates/turtle/src/atuin_server/handlers/v0/record.rs
index 5c57910b..9b147a52 100644
--- a/crates/atuin-server/src/handlers/v0/record.rs
+++ b/crates/turtle/src/atuin_server/handlers/v0/record.rs
@@ -3,13 +3,13 @@ use metrics::counter;
use serde::Deserialize;
use tracing::{error, instrument};
-use crate::{
+use crate::atuin_server::{
handlers::{ErrorResponse, ErrorResponseStatus, RespExt},
router::{AppState, UserAuth},
};
-use atuin_server_database::Database;
+use crate::atuin_server_database::Database;
-use atuin_common::record::{EncryptedData, HostId, Record, RecordIdx, RecordStatus};
+use crate::atuin_common::record::{EncryptedData, HostId, Record, RecordIdx, RecordStatus};
#[instrument(skip_all, fields(user.id = user.id))]
pub async fn post<DB: Database>(
diff --git a/crates/atuin-server/src/handlers/v0/store.rs b/crates/turtle/src/atuin_server/handlers/v0/store.rs
index 6ca455d7..cd184546 100644
--- a/crates/atuin-server/src/handlers/v0/store.rs
+++ b/crates/turtle/src/atuin_server/handlers/v0/store.rs
@@ -3,11 +3,11 @@ use metrics::counter;
use serde::Deserialize;
use tracing::{error, instrument};
-use crate::{
+use crate::atuin_server::{
handlers::{ErrorResponse, ErrorResponseStatus, RespExt},
router::{AppState, UserAuth},
};
-use atuin_server_database::Database;
+use crate::atuin_server_database::Database;
#[derive(Deserialize)]
pub struct DeleteParams {}
diff --git a/crates/atuin-server/src/metrics.rs b/crates/turtle/src/atuin_server/metrics.rs
index ebd0dd2d..ebd0dd2d 100644
--- a/crates/atuin-server/src/metrics.rs
+++ b/crates/turtle/src/atuin_server/metrics.rs
diff --git a/crates/atuin-server/src/lib.rs b/crates/turtle/src/atuin_server/mod.rs
index 02e50e1e..bd0f2168 100644
--- a/crates/atuin-server/src/lib.rs
+++ b/crates/turtle/src/atuin_server/mod.rs
@@ -1,9 +1,7 @@
-#![forbid(unsafe_code)]
-
use std::future::Future;
use std::net::SocketAddr;
-use atuin_server_database::Database;
+use crate::atuin_server_database::Database;
use axum::{Router, serve};
use eyre::{Context, Result};
@@ -13,7 +11,6 @@ mod router;
mod utils;
pub use settings::Settings;
-pub use settings::example_config;
pub mod settings;
diff --git a/crates/atuin-server/src/router.rs b/crates/turtle/src/atuin_server/router.rs
index 2d679759..11a16148 100644
--- a/crates/atuin-server/src/router.rs
+++ b/crates/turtle/src/atuin_server/router.rs
@@ -1,4 +1,4 @@
-use atuin_common::api::{ATUIN_CARGO_VERSION, ATUIN_HEADER_VERSION, ErrorResponse};
+use crate::atuin_common::api::{ATUIN_CARGO_VERSION, ATUIN_HEADER_VERSION, ErrorResponse};
use axum::{
Router,
extract::{FromRequestParts, Request},
@@ -12,12 +12,12 @@ use tower::ServiceBuilder;
use tower_http::trace::TraceLayer;
use super::handlers;
-use crate::{
+use crate::atuin_server::{
handlers::{ErrorResponseStatus, RespExt},
metrics,
settings::Settings,
};
-use atuin_server_database::{Database, DbError, models::User};
+use crate::atuin_server_database::{Database, DbError, models::User};
pub struct UserAuth(pub User);
diff --git a/crates/atuin-server/src/settings.rs b/crates/turtle/src/atuin_server/settings.rs
index 3a612be9..f6650af0 100644
--- a/crates/atuin-server/src/settings.rs
+++ b/crates/turtle/src/atuin_server/settings.rs
@@ -1,13 +1,11 @@
use std::{io::prelude::*, path::PathBuf};
-use atuin_server_database::DbSettings;
+use crate::atuin_server_database::DbSettings;
use config::{Config, Environment, File as ConfigFile, FileFormat};
use eyre::{Result, eyre};
use fs_err::{File, create_dir_all};
use serde::{Deserialize, Serialize};
-static EXAMPLE_CONFIG: &str = include_str!("../server.toml");
-
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Metrics {
#[serde(alias = "enabled")]
@@ -60,7 +58,7 @@ impl Settings {
PathBuf::from(p)
} else {
let mut config_file = PathBuf::new();
- let config_dir = atuin_common::utils::config_dir();
+ let config_dir = crate::atuin_common::utils::config_dir();
config_file.push(config_dir);
config_file
};
@@ -87,27 +85,26 @@ impl Settings {
.separator("__"),
);
- config_builder = if config_file.exists() {
- config_builder.add_source(ConfigFile::new(
- config_file.to_str().unwrap(),
- FileFormat::Toml,
- ))
+ let config = if config_file.exists() {
+ config_builder
+ .add_source(ConfigFile::new(
+ config_file.to_str().unwrap(),
+ FileFormat::Toml,
+ ))
+ .build()?
} else {
create_dir_all(config_file.parent().unwrap())?;
let mut file = File::create(config_file)?;
- file.write_all(EXAMPLE_CONFIG.as_bytes())?;
- config_builder
- };
+ let config = config_builder.build()?;
+ // TODO(@bpeetz): I'm quiet unsure, if this will work <2026-06-10>
+ file.write_all(config.cache.to_string().as_bytes())?;
- let config = config_builder.build()?;
+ config
+ };
config
.try_deserialize()
.map_err(|e| eyre!("failed to deserialize: {}", e))
}
}
-
-pub fn example_config() -> &'static str {
- EXAMPLE_CONFIG
-}
diff --git a/crates/atuin-server/src/utils.rs b/crates/turtle/src/atuin_server/utils.rs
index 12e9ac1b..12e9ac1b 100644
--- a/crates/atuin-server/src/utils.rs
+++ b/crates/turtle/src/atuin_server/utils.rs
diff --git a/crates/atuin-server-database/src/calendar.rs b/crates/turtle/src/atuin_server_database/calendar.rs
index 2229667b..2229667b 100644
--- a/crates/atuin-server-database/src/calendar.rs
+++ b/crates/turtle/src/atuin_server_database/calendar.rs
diff --git a/crates/atuin-server-database/src/lib.rs b/crates/turtle/src/atuin_server_database/mod.rs
index 5437fc15..91077b84 100644
--- a/crates/atuin-server-database/src/lib.rs
+++ b/crates/turtle/src/atuin_server_database/mod.rs
@@ -1,5 +1,3 @@
-#![forbid(unsafe_code)]
-
pub mod calendar;
pub mod models;
@@ -14,7 +12,7 @@ use self::{
models::{History, NewHistory, NewSession, NewUser, Session, User},
};
use async_trait::async_trait;
-use atuin_common::record::{EncryptedData, HostId, Record, RecordIdx, RecordStatus};
+use crate::atuin_common::record::{EncryptedData, HostId, Record, RecordIdx, RecordStatus};
use serde::{Deserialize, Serialize};
use time::{Date, Duration, Month, OffsetDateTime, PrimitiveDateTime, Time, UtcOffset};
use tracing::instrument;
diff --git a/crates/atuin-server-database/src/models.rs b/crates/turtle/src/atuin_server_database/models.rs
index b71a9bc9..b71a9bc9 100644
--- a/crates/atuin-server-database/src/models.rs
+++ b/crates/turtle/src/atuin_server_database/models.rs
diff --git a/crates/atuin-server-postgres/src/lib.rs b/crates/turtle/src/atuin_server_postgres/mod.rs
index 2e69c7f2..f506cf25 100644
--- a/crates/atuin-server-postgres/src/lib.rs
+++ b/crates/turtle/src/atuin_server_postgres/mod.rs
@@ -3,10 +3,12 @@ use std::ops::Range;
use rand::Rng;
+use crate::atuin_common::record::{EncryptedData, HostId, Record, RecordIdx, RecordStatus};
+use crate::atuin_server_database::models::{
+ History, NewHistory, NewSession, NewUser, Session, User,
+};
+use crate::atuin_server_database::{Database, DbError, DbResult, DbSettings, into_utc};
use async_trait::async_trait;
-use atuin_common::record::{EncryptedData, HostId, Record, RecordIdx, RecordStatus};
-use atuin_server_database::models::{History, NewHistory, NewSession, NewUser, Session, User};
-use atuin_server_database::{Database, DbError, DbResult, DbSettings, into_utc};
use futures_util::TryStreamExt;
use sqlx::Row;
use sqlx::postgres::PgPoolOptions;
@@ -289,7 +291,7 @@ impl Database for Postgres {
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
",
@@ -430,11 +432,11 @@ impl Database for Postgres {
let mut heads = HashMap::<(HostId, &str), u64>::new();
for i in records {
- let id = atuin_common::utils::uuid_v7();
+ let id = crate::atuin_common::utils::uuid_v7();
let result = 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
",
@@ -469,7 +471,7 @@ impl Database for Postgres {
for ((host, tag), idx) in heads {
sqlx::query(
"insert into store_idx_cache
- (user_id, host, tag, idx)
+ (user_id, host, tag, idx)
values ($1, $2, $3, $4)
on conflict(user_id, host, tag) do update set idx = greatest(store_idx_cache.idx, $4)
",
diff --git a/crates/atuin-server-postgres/src/wrappers.rs b/crates/turtle/src/atuin_server_postgres/wrappers.rs
index cde4134c..214b255d 100644
--- a/crates/atuin-server-postgres/src/wrappers.rs
+++ b/crates/turtle/src/atuin_server_postgres/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, postgres::PgRow};
use time::PrimitiveDateTime;
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);