use rainier_support::setting_enum;
setting_enum! {
pub enum FilesystemDriver: "filesystem driver" {
#[default]
Local = "local",
Memory = "memory",
S3 = "s3",
}
}
impl FilesystemDriver {
pub fn is_shared(&self) -> bool {
matches!(self, Self::S3)
}
pub fn is_durable(&self) -> bool {
matches!(self, Self::S3)
}
}
#[cfg(test)]
mod tests {
use super::*;
use rainier_support::Setting;
#[test]
fn only_object_storage_is_shared_and_durable() {
assert!(FilesystemDriver::S3.is_shared());
assert!(FilesystemDriver::S3.is_durable());
for driver in FilesystemDriver::ALL.iter().filter(|d| **d != FilesystemDriver::S3) {
assert!(!driver.is_shared(), "{driver} is per-machine");
assert!(!driver.is_durable(), "{driver} does not outlive its machine");
}
}
}