use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};
use super::types::*;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccessLogCreatedEvent {
pub id: AccessLogId,
pub data: AccessLogDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccessLogUpdatedEvent {
pub id: AccessLogId,
pub data: AccessLogDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccessLogDeletedEvent {
pub id: AccessLogId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BucketCreatedEvent {
pub id: BucketId,
pub data: BucketDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BucketUpdatedEvent {
pub id: BucketId,
pub data: BucketDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BucketDeletedEvent {
pub id: BucketId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ContentHashCreatedEvent {
pub id: ContentHashId,
pub data: ContentHashDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ContentHashUpdatedEvent {
pub id: ContentHashId,
pub data: ContentHashDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ContentHashDeletedEvent {
pub id: ContentHashId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConversionJobCreatedEvent {
pub id: ConversionJobId,
pub data: ConversionJobDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConversionJobUpdatedEvent {
pub id: ConversionJobId,
pub data: ConversionJobDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConversionJobDeletedEvent {
pub id: ConversionJobId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileCommentCreatedEvent {
pub id: FileCommentId,
pub data: FileCommentDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileCommentUpdatedEvent {
pub id: FileCommentId,
pub data: FileCommentDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileCommentDeletedEvent {
pub id: FileCommentId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileLockCreatedEvent {
pub id: FileLockId,
pub data: FileLockDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileLockUpdatedEvent {
pub id: FileLockId,
pub data: FileLockDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileLockDeletedEvent {
pub id: FileLockId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileShareCreatedEvent {
pub id: FileShareId,
pub data: FileShareDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileShareUpdatedEvent {
pub id: FileShareId,
pub data: FileShareDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileShareDeletedEvent {
pub id: FileShareId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileVersionCreatedEvent {
pub id: FileVersionId,
pub data: FileVersionDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileVersionUpdatedEvent {
pub id: FileVersionId,
pub data: FileVersionDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileVersionDeletedEvent {
pub id: FileVersionId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ProcessingJobCreatedEvent {
pub id: ProcessingJobId,
pub data: ProcessingJobDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ProcessingJobUpdatedEvent {
pub id: ProcessingJobId,
pub data: ProcessingJobDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ProcessingJobDeletedEvent {
pub id: ProcessingJobId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StoredFileCreatedEvent {
pub id: StoredFileId,
pub data: StoredFileDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StoredFileUpdatedEvent {
pub id: StoredFileId,
pub data: StoredFileDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StoredFileDeletedEvent {
pub id: StoredFileId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ThumbnailCreatedEvent {
pub id: ThumbnailId,
pub data: ThumbnailDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ThumbnailUpdatedEvent {
pub id: ThumbnailId,
pub data: ThumbnailDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ThumbnailDeletedEvent {
pub id: ThumbnailId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UploadSessionCreatedEvent {
pub id: UploadSessionId,
pub data: UploadSessionDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UploadSessionUpdatedEvent {
pub id: UploadSessionId,
pub data: UploadSessionDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UploadSessionDeletedEvent {
pub id: UploadSessionId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserQuotaCreatedEvent {
pub id: UserQuotaId,
pub data: UserQuotaDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserQuotaUpdatedEvent {
pub id: UserQuotaId,
pub data: UserQuotaDto,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserQuotaDeletedEvent {
pub id: UserQuotaId,
pub occurred_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum BucketEvent {
AccessLogCreated(AccessLogCreatedEvent),
AccessLogUpdated(AccessLogUpdatedEvent),
AccessLogDeleted(AccessLogDeletedEvent),
BucketCreated(BucketCreatedEvent),
BucketUpdated(BucketUpdatedEvent),
BucketDeleted(BucketDeletedEvent),
ContentHashCreated(ContentHashCreatedEvent),
ContentHashUpdated(ContentHashUpdatedEvent),
ContentHashDeleted(ContentHashDeletedEvent),
ConversionJobCreated(ConversionJobCreatedEvent),
ConversionJobUpdated(ConversionJobUpdatedEvent),
ConversionJobDeleted(ConversionJobDeletedEvent),
FileCommentCreated(FileCommentCreatedEvent),
FileCommentUpdated(FileCommentUpdatedEvent),
FileCommentDeleted(FileCommentDeletedEvent),
FileLockCreated(FileLockCreatedEvent),
FileLockUpdated(FileLockUpdatedEvent),
FileLockDeleted(FileLockDeletedEvent),
FileShareCreated(FileShareCreatedEvent),
FileShareUpdated(FileShareUpdatedEvent),
FileShareDeleted(FileShareDeletedEvent),
FileVersionCreated(FileVersionCreatedEvent),
FileVersionUpdated(FileVersionUpdatedEvent),
FileVersionDeleted(FileVersionDeletedEvent),
ProcessingJobCreated(ProcessingJobCreatedEvent),
ProcessingJobUpdated(ProcessingJobUpdatedEvent),
ProcessingJobDeleted(ProcessingJobDeletedEvent),
StoredFileCreated(StoredFileCreatedEvent),
StoredFileUpdated(StoredFileUpdatedEvent),
StoredFileDeleted(StoredFileDeletedEvent),
ThumbnailCreated(ThumbnailCreatedEvent),
ThumbnailUpdated(ThumbnailUpdatedEvent),
ThumbnailDeleted(ThumbnailDeletedEvent),
UploadSessionCreated(UploadSessionCreatedEvent),
UploadSessionUpdated(UploadSessionUpdatedEvent),
UploadSessionDeleted(UploadSessionDeletedEvent),
UserQuotaCreated(UserQuotaCreatedEvent),
UserQuotaUpdated(UserQuotaUpdatedEvent),
UserQuotaDeleted(UserQuotaDeletedEvent),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BucketEventMetadata {
pub module: &'static str,
pub version: &'static str,
}
impl Default for BucketEventMetadata {
fn default() -> Self {
Self {
module: "bucket",
version: "1.0",
}
}
}