e297b98f72
* 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>
47 lines
1.1 KiB
Rust
47 lines
1.1 KiB
Rust
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(),
|
|
}
|
|
}
|
|
}
|