use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct DataPolicyRule {
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "comment")]
pub comment: String,
#[serde(rename = "clauses")]
pub clauses: Vec<models::DataPolicyClause>,
#[serde(rename = "effect")]
pub effect: models::DataPolicyRuleEffect,
#[serde(rename = "tokenScope", skip_serializing_if = "Option::is_none")]
pub token_scope: Option<TokenScope>,
#[serde(rename = "tokenFormat", skip_serializing_if = "Option::is_none")]
pub token_format: Option<TokenFormat>,
#[serde(rename = "priority")]
pub priority: i32,
}
impl DataPolicyRule {
pub fn new(id: String, comment: String, clauses: Vec<models::DataPolicyClause>, effect: models::DataPolicyRuleEffect, priority: i32) -> DataPolicyRule {
DataPolicyRule {
id,
comment,
clauses,
effect,
token_scope: None,
token_format: None,
priority,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TokenScope {
#[serde(rename = "unique")]
Unique,
#[serde(rename = "capsule")]
Capsule,
#[serde(rename = "domain")]
Domain,
}
impl Default for TokenScope {
fn default() -> TokenScope {
Self::Unique
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TokenFormat {
#[serde(rename = "explicit")]
Explicit,
#[serde(rename = "synthetic")]
Synthetic,
}
impl Default for TokenFormat {
fn default() -> TokenFormat {
Self::Explicit
}
}