myc_core/domain/dtos/webhook/
trigger.rs1use serde::{Deserialize, Serialize};
2use std::fmt::{self, Display, Formatter};
3use std::str::FromStr;
4use utoipa::ToSchema;
5
6#[derive(
7 Clone, Debug, Serialize, Deserialize, ToSchema, PartialEq, Eq, Hash,
8)]
9pub enum WebHookTrigger {
10 #[serde(rename = "subscriptionAccount.created")]
14 SubscriptionAccountCreated,
15 #[serde(rename = "subscriptionAccount.updated")]
16 SubscriptionAccountUpdated,
17 #[serde(rename = "subscriptionAccount.deleted")]
18 SubscriptionAccountDeleted,
19
20 #[serde(rename = "userAccount.created")]
24 UserAccountCreated,
25 #[serde(rename = "userAccount.updated")]
26 UserAccountUpdated,
27 #[serde(rename = "userAccount.deleted")]
28 UserAccountDeleted,
29}
30
31impl Display for WebHookTrigger {
32 fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
33 match self {
34 Self::SubscriptionAccountCreated => {
35 write!(f, "subscriptionAccount.created")
36 }
37 Self::SubscriptionAccountUpdated => {
38 write!(f, "subscriptionAccount.updated")
39 }
40 Self::SubscriptionAccountDeleted => {
41 write!(f, "subscriptionAccount.deleted")
42 }
43 Self::UserAccountCreated => write!(f, "userAccount.created"),
44 Self::UserAccountUpdated => write!(f, "userAccount.updated"),
45 Self::UserAccountDeleted => write!(f, "userAccount.deleted"),
46 }
47 }
48}
49
50impl FromStr for WebHookTrigger {
51 type Err = String;
52
53 fn from_str(s: &str) -> Result<Self, Self::Err> {
54 match s {
55 "subscriptionAccount.created" => {
56 Ok(Self::SubscriptionAccountCreated)
57 }
58 "subscriptionAccount.updated" => {
59 Ok(Self::SubscriptionAccountUpdated)
60 }
61 "subscriptionAccount.deleted" => {
62 Ok(Self::SubscriptionAccountDeleted)
63 }
64 "userAccount.created" => Ok(Self::UserAccountCreated),
65 "userAccount.updated" => Ok(Self::UserAccountUpdated),
66 "userAccount.deleted" => Ok(Self::UserAccountDeleted),
67 _ => Err(format!("Unknown webhook trigger: {}", s)),
68 }
69 }
70}