use uuid::Uuid;
use crate::error::StorageError;
use crate::store::StoreResult;
#[allow(dead_code)]
pub(crate) fn parse_uuid(s: &str, field: impl Into<String>) -> StoreResult<Uuid> {
Uuid::parse_str(s).map_err(|e| StorageError::DataCorruption {
field: field.into(),
message: e.to_string(),
source: Some(Box::new(e)),
})
}
#[allow(dead_code)]
pub(crate) fn parse_rfc3339(
s: &str,
field: impl Into<String>,
) -> StoreResult<chrono::DateTime<chrono::Utc>> {
chrono::DateTime::parse_from_rfc3339(s)
.map(|dt| dt.with_timezone(&chrono::Utc))
.map_err(|e| StorageError::DataCorruption {
field: field.into(),
message: e.to_string(),
source: Some(Box::new(e)),
})
}
#[allow(dead_code)]
pub(crate) fn to_json_string<T: serde::Serialize + ?Sized>(
value: &T,
field: impl Into<String>,
) -> StoreResult<String> {
serde_json::to_string(value).map_err(|e| StorageError::SerializationFailed {
message: format!("{}: {}", field.into(), e),
source: Some(Box::new(e)),
})
}
#[allow(dead_code)]
pub(crate) fn from_json_str<T: serde::de::DeserializeOwned>(
s: &str,
field: impl Into<String>,
) -> StoreResult<T> {
serde_json::from_str(s).map_err(|e| StorageError::DataCorruption {
field: field.into(),
message: e.to_string(),
source: Some(Box::new(e)),
})
}