use serde::{Deserialize, Serialize};
use std::fmt;
mod condition;
mod context;
mod definition;
pub(crate) mod filter;
#[cfg(test)]
mod tests;
pub use condition::*;
pub use context::*;
pub use definition::*;
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct ConditionId(pub(crate) String);
impl ConditionId {
pub fn as_str(&self) -> &str {
&self.0
}
}
impl fmt::Display for ConditionId {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.0)
}
}
impl AsRef<str> for ConditionId {
fn as_ref(&self) -> &str {
&self.0
}
}
impl From<String> for ConditionId {
fn from(s: String) -> Self {
Self(s)
}
}
impl From<&str> for ConditionId {
fn from(s: &str) -> Self {
Self(s.to_owned())
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct TriggerDefinitionId(String);
impl TriggerDefinitionId {
pub fn as_str(&self) -> &str {
&self.0
}
}
impl fmt::Display for TriggerDefinitionId {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.0)
}
}
impl AsRef<str> for TriggerDefinitionId {
fn as_ref(&self) -> &str {
&self.0
}
}
impl From<String> for TriggerDefinitionId {
fn from(s: String) -> Self {
Self(s)
}
}
impl From<&str> for TriggerDefinitionId {
fn from(s: &str) -> Self {
Self(s.to_owned())
}
}
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub struct TriggerRunId(String);
impl TriggerRunId {
pub fn as_str(&self) -> &str {
&self.0
}
}
impl fmt::Display for TriggerRunId {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.0)
}
}
impl AsRef<str> for TriggerRunId {
fn as_ref(&self) -> &str {
&self.0
}
}
impl From<String> for TriggerRunId {
fn from(s: String) -> Self {
Self(s)
}
}
impl From<&str> for TriggerRunId {
fn from(s: &str) -> Self {
Self(s.to_owned())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub enum TriggerLogic {
And,
Or,
}
impl fmt::Display for TriggerLogic {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::And => write!(f, "AND"),
Self::Or => write!(f, "OR"),
}
}
}