Skip to main content

shared/models/server_backup/
events.rs

1use crate::models::EventEmittingModel;
2use std::sync::LazyLock;
3
4#[non_exhaustive]
5pub enum ServerBackupEvent {
6    /// Emitted when a server backup restore starts.
7    RestoreStarted {
8        backup: Box<super::ServerBackup>,
9        server: Box<crate::models::server::Server>,
10    },
11    /// Emitted when a server backup restore completes, either successfully or unsuccessfully.
12    RestoreCompleted {
13        backup: Box<super::ServerBackup>,
14        server: Box<crate::models::server::Server>,
15        successful: bool,
16    },
17    /// Emitted when a server backup creation completes, either successfully or unsuccessfully.
18    CreationCompleted {
19        backup: Box<super::ServerBackup>,
20        successful: bool,
21    },
22    /// Emitted when a server backup deletion completes, either successfully or unsuccessfully.
23    DeletionCompleted {
24        backup: Box<super::ServerBackup>,
25        successful: bool,
26    },
27}
28
29#[async_trait::async_trait]
30impl EventEmittingModel for super::ServerBackup {
31    type Event = ServerBackupEvent;
32
33    fn get_event_emitter() -> &'static crate::events::EventEmitter<Self::Event> {
34        static EVENT_EMITTER: LazyLock<crate::events::EventEmitter<ServerBackupEvent>> =
35            LazyLock::new(crate::events::EventEmitter::default);
36
37        &EVENT_EMITTER
38    }
39}