use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum IdempotencyClass {
NonDestructive,
Destructive,
}
impl IdempotencyClass {
pub fn ttl_seconds(self) -> u64 {
match self {
Self::NonDestructive => 24 * 60 * 60,
Self::Destructive => 60,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn non_destructive_caches_for_24_hours() {
assert_eq!(IdempotencyClass::NonDestructive.ttl_seconds(), 86_400);
}
#[test]
fn destructive_caches_for_60_seconds() {
assert_eq!(IdempotencyClass::Destructive.ttl_seconds(), 60);
}
}