nimbuspulse_client/types/
triggers.rs1use 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}