aboutsummaryrefslogtreecommitdiff
path: root/src/model/repetition.rs
blob: 80387d9df85c478bb27f361addce1b2a5816fbf0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use chrono::Weekday;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub enum Repetition {
    Daily { frequency: u8 },
    Monthly { frequency: MonthFrequency },
    Yearly,
}

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub enum MonthFrequency {
    Day { day: u8 },
    FirstDay { day: Weekday },
}

// Validation

pub fn validate_day(str: &str) -> Option<u8> {
    let n = str.parse::<u8>().ok()?;
    if n >= 1 && n <= 31 {
        Some(n)
    } else {
        None
    }
}