mirror of
https://github.com/deuxfleurs-org/garage.git
synced 2026-08-20 01:52:15 +00:00
use a NaiveDate in data model, it serializes to string (iso 8601 format)
This commit is contained in:
@@ -270,12 +270,11 @@ impl Expiration {
|
||||
(Some(_), Some(_)) => Err("cannot have both <Days> and <Date> in <Expiration>"),
|
||||
(None, None) => Err("<Expiration> must contain either <Days> or <Date>"),
|
||||
(Some(days), None) => Ok(GarageLifecycleExpiration::AfterDays(days.0 as usize)),
|
||||
(None, Some(date)) => {
|
||||
if date.0.parse::<chrono::NaiveDate>().is_err() {
|
||||
return Err("Invalid expiration <Date>");
|
||||
}
|
||||
Ok(GarageLifecycleExpiration::AtDate(date.0))
|
||||
}
|
||||
(None, Some(date)) => date
|
||||
.0
|
||||
.parse::<chrono::NaiveDate>()
|
||||
.map(GarageLifecycleExpiration::AtDate)
|
||||
.map_err(|_| "Invalid expiration <Date>"),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -285,9 +284,9 @@ impl Expiration {
|
||||
days: Some(IntValue(*days as i64)),
|
||||
at_date: None,
|
||||
},
|
||||
GarageLifecycleExpiration::AtDate(days) => Expiration {
|
||||
GarageLifecycleExpiration::AtDate(date) => Expiration {
|
||||
days: None,
|
||||
at_date: Some(Value::from(days.as_str())),
|
||||
at_date: Some(Value(date.to_string())),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ garage_util.workspace = true
|
||||
async-trait = "0.1.7"
|
||||
arc-swap = "1.0"
|
||||
blake2 = "0.10"
|
||||
chrono = { version = "0.4", features = ["serde"] }
|
||||
err-derive = "0.3"
|
||||
hex = "0.4"
|
||||
base64 = "0.21"
|
||||
|
||||
@@ -105,7 +105,7 @@ mod v08 {
|
||||
/// Objects expire x days after they were created
|
||||
AfterDays(usize),
|
||||
/// Objects expire at date x (must be in yyyy-mm-dd format)
|
||||
AtDate(String),
|
||||
AtDate(chrono::naive::NaiveDate),
|
||||
}
|
||||
|
||||
#[derive(Default, PartialEq, Eq, PartialOrd, Ord, Clone, Debug, Serialize, Deserialize)]
|
||||
|
||||
Reference in New Issue
Block a user