From e297b98f721bf32d8d4331677eefe49823db32b9 Mon Sep 17 00:00:00 2001 From: Ellie Huxtable Date: Fri, 4 Nov 2022 09:08:20 +0000 Subject: 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 * fix usage * Fix typo * New Rust, new clippy stuff Co-authored-by: Conrad Ludgate --- atuin-common/src/api.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'atuin-common/src/api.rs') 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, + hostname: chrono::DateTime, + + // 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, + pub event_ts: chrono::DateTime, + pub host: String, +} + +#[derive(Debug, Serialize, Deserialize)] +pub struct SyncEventResponse { + pub events: Vec, +} -- cgit v1.3.1