diff options
author | Ellie Huxtable <ellie@elliehuxtable.com> | 2023-07-14 20:44:08 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-14 20:44:08 +0100 |
commit | 97e24d0d41bb743833e457de5ba49c5c233eb3b3 (patch) | |
tree | f0cfefd9048df83d3029cb0b0d21f1f88813fe2e /atuin-server-database | |
parent | 3d4302ded148c13b302fb317240342a303308c7e (diff) |
Add new sync (#1093)
* Add record migration
* Add database functions for inserting history
No real tests yet :( I would like to avoid running postgres lol
* Add index handler, use UUIDs not strings
* Fix a bunch of tests, remove Option<Uuid>
* Add tests, all passing
* Working upload sync
* Record downloading works
* Sync download works
* Don't waste requests
* Use a page size for uploads, make it variable later
* Aaaaaand they're encrypted now too
* Add cek
* Allow reading tail across hosts
* Revert "Allow reading tail across hosts"
Not like that
This reverts commit 7b0c72e7e050c358172f9b53cbd21b9e44cf4931.
* Handle multiple shards properly
* format
* Format and make clippy happy
* use some fancy types (#1098)
* use some fancy types
* fmt
* Goodbye horrible tuple
* Update atuin-server-postgres/migrations/20230623070418_records.sql
Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>
* fmt
* Sort tests too because time sucks
* fix features
---------
Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>
Diffstat (limited to 'atuin-server-database')
-rw-r--r-- | atuin-server-database/src/lib.rs | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/atuin-server-database/src/lib.rs b/atuin-server-database/src/lib.rs index de33ba448..cdff90a2a 100644 --- a/atuin-server-database/src/lib.rs +++ b/atuin-server-database/src/lib.rs @@ -13,7 +13,10 @@ use self::{ models::{History, NewHistory, NewSession, NewUser, Session, User}, }; use async_trait::async_trait; -use atuin_common::utils::get_days_from_month; +use atuin_common::{ + record::{EncryptedData, HostId, Record, RecordId, RecordIndex}, + utils::get_days_from_month, +}; use chrono::{Datelike, TimeZone}; use chronoutil::RelativeDuration; use serde::{de::DeserializeOwned, Serialize}; @@ -55,6 +58,19 @@ pub trait Database: Sized + Clone + Send + Sync + 'static { async fn delete_history(&self, user: &User, id: String) -> DbResult<()>; async fn deleted_history(&self, user: &User) -> DbResult<Vec<String>>; + async fn add_records(&self, user: &User, record: &[Record<EncryptedData>]) -> DbResult<()>; + async fn next_records( + &self, + user: &User, + host: HostId, + tag: String, + start: Option<RecordId>, + count: u64, + ) -> DbResult<Vec<Record<EncryptedData>>>; + + // Return the tail record ID for each store, so (HostID, Tag, TailRecordID) + async fn tail_records(&self, user: &User) -> DbResult<RecordIndex>; + async fn count_history_range( &self, user: &User, |