use super::choice::{DatabaseBackend, Interaction, Routing};
pub const UI_ICON_SET: &str = "lucide";
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct ProjectOptions {
pub routing: Routing,
pub database: DatabaseSetup,
pub interaction: Interaction,
pub tailwind: bool,
pub icons: IconSetup,
pub font: FontSetup,
pub ui: bool,
pub example: bool,
}
impl ProjectOptions {
pub fn icon_sets(&self) -> Vec<&str> {
let mut sets = Vec::new();
if let IconSetup::Iconify { set } = &self.icons {
sets.push(set.as_str());
}
if self.ui && !sets.contains(&UI_ICON_SET) {
sets.push(UI_ICON_SET);
}
sets
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum DatabaseSetup {
None,
Toasty { backend: DatabaseBackend },
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum IconSetup {
None,
Custom,
Iconify { set: String },
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum FontSetup {
None,
Fontsource { family: String },
}