use serde::Deserialize;
use crate::store::file::FileConfig;
#[cfg(feature = "trust-dns-resolver")]
use crate::store::forwarder::ForwardConfig;
#[cfg(feature = "trust-dns-recursor")]
use crate::store::recursor::RecursiveConfig;
#[cfg(feature = "sqlite")]
use crate::store::sqlite::SqliteConfig;
#[derive(Deserialize, PartialEq, Eq, Debug)]
#[serde(tag = "type")]
#[serde(rename_all = "lowercase")]
#[non_exhaustive]
pub enum StoreConfig {
File(FileConfig),
#[cfg(feature = "sqlite")]
#[cfg_attr(docsrs, doc(cfg(feature = "sqlite")))]
Sqlite(SqliteConfig),
#[cfg(feature = "trust-dns-resolver")]
#[cfg_attr(docsrs, doc(cfg(feature = "resolver")))]
Forward(ForwardConfig),
#[cfg(feature = "trust-dns-recursor")]
#[cfg_attr(docsrs, doc(cfg(feature = "recursor")))]
Recursor(RecursiveConfig),
}