aboutsummaryrefslogtreecommitdiff
path: root/src/model/frequency.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/model/frequency.rs')
-rw-r--r--src/model/frequency.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/model/frequency.rs b/src/model/frequency.rs
new file mode 100644
index 0000000..bb83e27
--- /dev/null
+++ b/src/model/frequency.rs
@@ -0,0 +1,31 @@
+use serde::{Deserialize, Serialize};
+use std::{fmt, str};
+
+#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, sqlx::Type)]
+pub enum Frequency {
+ Punctual,
+ Monthly,
+}
+
+impl fmt::Display for Frequency {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ match self {
+ Frequency::Punctual => write!(f, "Punctual"),
+ Frequency::Monthly => write!(f, "Monthly"),
+ }
+ }
+}
+
+pub struct ParseFrequencyError;
+
+impl str::FromStr for Frequency {
+ type Err = ParseFrequencyError;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ match s {
+ "Punctual" => Ok(Frequency::Punctual),
+ "Monthly" => Ok(Frequency::Monthly),
+ _ => Err(ParseFrequencyError {}),
+ }
+ }
+}