diff options
| author | Ellie Huxtable <ellie@elliehuxtable.com> | 2022-11-04 09:08:20 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-11-04 09:08:20 +0000 |
| commit | e297b98f721bf32d8d4331677eefe49823db32b9 (patch) | |
| tree | e30910e2e1e82a0e15fcbc3d8869e35ae99936f8 /atuin-client/src/event.rs | |
| parent | Build ARM64 releases & update runners (#593) (diff) | |
| download | atuin-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-client/src/event.rs')
| -rw-r--r-- | atuin-client/src/event.rs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/atuin-client/src/event.rs b/atuin-client/src/event.rs new file mode 100644 index 00000000..4e76c077 --- /dev/null +++ b/atuin-client/src/event.rs @@ -0,0 +1,47 @@ +use chrono::Utc; +use serde::{Deserialize, Serialize}; + +use crate::history::History; +use atuin_common::utils::uuid_v4; + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)] +pub enum EventType { + Create, + Delete, +} + +#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, sqlx::FromRow)] +pub struct Event { + pub id: String, + pub timestamp: chrono::DateTime<Utc>, + pub hostname: String, + pub event_type: EventType, + + pub history_id: String, +} + +impl Event { + pub fn new_create(history: &History) -> Event { + Event { + id: uuid_v4(), + timestamp: history.timestamp, + hostname: history.hostname.clone(), + event_type: EventType::Create, + + history_id: history.id.clone(), + } + } + + pub fn new_delete(history_id: &str) -> Event { + let hostname = format!("{}:{}", whoami::hostname(), whoami::username()); + + Event { + id: uuid_v4(), + timestamp: chrono::Utc::now(), + hostname, + event_type: EventType::Create, + + history_id: history_id.to_string(), + } + } +} |
