use serde::{Deserialize, Serialize};
use xvc_core::persist;
use super::{XvcStorageGuid, XvcStoragePath};
#[derive(Clone, Debug, PartialOrd, Ord, PartialEq, Eq, Serialize, Deserialize)]
pub struct XvcStorageInitEvent {
pub guid: XvcStorageGuid,
}
#[derive(Clone, Debug, PartialOrd, Ord, PartialEq, Eq, Serialize, Deserialize)]
pub struct XvcStorageListEvent {
pub guid: XvcStorageGuid,
pub paths: Vec<XvcStoragePath>,
}
#[derive(Clone, Debug, PartialOrd, Ord, PartialEq, Eq, Serialize, Deserialize)]
pub struct XvcStorageSendEvent {
pub guid: XvcStorageGuid,
pub paths: Vec<XvcStoragePath>,
}
#[derive(Clone, Debug, PartialOrd, Ord, PartialEq, Eq, Serialize, Deserialize)]
pub struct XvcStorageReceiveEvent {
pub guid: XvcStorageGuid,
pub paths: Vec<XvcStoragePath>,
}
#[derive(Clone, Debug, PartialOrd, Ord, PartialEq, Eq, Serialize, Deserialize)]
pub struct XvcStorageDeleteEvent {
pub guid: XvcStorageGuid,
pub paths: Vec<XvcStoragePath>,
}
#[derive(Clone, Debug, PartialOrd, Ord, PartialEq, Eq, Serialize, Deserialize)]
pub struct XvcStorageExpiringShareEvent {
pub guid: XvcStorageGuid,
pub path: XvcStoragePath,
pub signed_url: String,
pub expiration_seconds: u32,
}
#[derive(Clone, Debug, PartialOrd, Ord, PartialEq, Eq, Serialize, Deserialize)]
pub enum XvcStorageEvent {
Init(XvcStorageInitEvent),
List(XvcStorageListEvent),
Send(XvcStorageSendEvent),
Receive(XvcStorageReceiveEvent),
Delete(XvcStorageDeleteEvent),
Share(XvcStorageExpiringShareEvent),
}
persist!(XvcStorageEvent, "storage-event");