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