aboutsummaryrefslogtreecommitdiffstats
path: root/atuin-client/src/event.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-client/src/event.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-client/src/event.rs')
-rw-r--r--atuin-client/src/event.rs47
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(),
+ }
+ }
+}