Skip to main content

nimbuspulse_client/types/
triggers.rs

1use serde::{Deserialize, Serialize};
2use uuid::Uuid;
3
4#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
5#[serde(tag = "type", content = "config")]
6pub enum TriggerCondition {
7    PlayerCount {
8        operator: ComparisonOperator,
9        threshold: u32,
10    },
11    OnEvent {
12        event_type: String,
13    },
14    Schedule {
15        cron_expression: String,
16    },
17}
18
19#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
20pub enum ComparisonOperator {
21    Equal,
22    NotEqual,
23    GreaterThan,
24    GreaterThanOrEqual,
25    LessThan,
26    LessThanOrEqual,
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
30#[serde(tag = "type", content = "params")]
31pub enum TriggerAction {
32    RestartInstance,
33    StopInstance,
34    ExecuteLuaScript { script: String },
35    SendChatMessage { message: String },
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
39pub struct Trigger {
40    pub id: Option<Uuid>,
41    pub instance_id: Uuid,
42    pub name: String,
43    pub description: Option<String>,
44    pub condition: TriggerCondition,
45    pub action: TriggerAction,
46    pub last_executed_at: Option<String>,
47    pub created_at: String,
48    pub updated_at: String,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
52pub struct CreateTriggerRequest {
53    pub name: String,
54    pub description: Option<String>,
55    pub condition: TriggerCondition,
56    pub action: TriggerAction,
57}