aboutsummaryrefslogtreecommitdiffstats
path: root/atuin-common/src/api.rs
diff options
context:
space:
mode:
authorEllie Huxtable <ellie@elliehuxtable.com>2022-11-04 09:08:20 +0000
committerGitHub <noreply@github.com>2022-11-04 09:08:20 +0000
commite297b98f721bf32d8d4331677eefe49823db32b9 (patch)
treee30910e2e1e82a0e15fcbc3d8869e35ae99936f8 /atuin-common/src/api.rs
parentBuild ARM64 releases & update runners (#593) (diff)
downloadatuin-e297b98f721bf32d8d4331677eefe49823db32b9.zip
Add local event log storage (#390)
* Add event data structures This adds the data structures required to start syncing events, rather than syncing history directly. Adjust event Fix Add event data structure to client * Add server event table sql * Add client event table migration Adjust migration * Insert into event table from client * Add event merge function Right now this just ensures we have the right amount of events given the history we have BUT it will also be used to merge CREATE/DELETE events, resulting in history being deleted :) * Make CI happy * Adjust * we don't limit history length any more * Update atuin-client/src/database.rs Co-authored-by: Conrad Ludgate <conradludgate@gmail.com> * fix usage * Fix typo * New Rust, new clippy stuff Co-authored-by: Conrad Ludgate <conradludgate@gmail.com>
Diffstat (limited to 'atuin-common/src/api.rs')
-rw-r--r--atuin-common/src/api.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/atuin-common/src/api.rs b/atuin-common/src/api.rs
index f17cfd58..f5d5daa6 100644
--- a/atuin-common/src/api.rs
+++ b/atuin-common/src/api.rs
@@ -65,3 +65,32 @@ pub struct IndexResponse {
pub homage: String,
pub version: String,
}
+
+// Doubled up with the history sync stuff, because atm we need to support BOTH.
+// People are still running old clients, and in some cases _very_ old clients.
+#[derive(Debug, Serialize, Deserialize)]
+pub enum AddEventRequest {
+ Create(AddHistoryRequest),
+
+ Delete {
+ id: String,
+ timestamp: chrono::DateTime<Utc>,
+ hostname: chrono::DateTime<Utc>,
+
+ // When we delete a history item, we push up an event marking its client
+ // id as being deleted.
+ history_id: String,
+ },
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct SyncEventRequest {
+ pub sync_ts: chrono::DateTime<chrono::FixedOffset>,
+ pub event_ts: chrono::DateTime<chrono::FixedOffset>,
+ pub host: String,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct SyncEventResponse {
+ pub events: Vec<String>,
+}