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}
23
24#[async_trait::async_trait]
25impl EventEmittingModel for super::ServerBackup {
26    type Event = ServerBackupEvent;
27
28    fn get_event_emitter() -> &'static crate::events::EventEmitter<Self::Event> {
29        static EVENT_EMITTER: LazyLock<crate::events::EventEmitter<ServerBackupEvent>> =
30            LazyLock::new(crate::events::EventEmitter::default);
31
32        &EVENT_EMITTER
33    }
34}