use super::{Resource, ResourceDef};
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
#[non_exhaustive]
pub enum ResourcePage {
Create,
View,
}
impl<R: Resource> ResourceDef<R> {
#[must_use]
pub fn without_page(mut self, page: ResourcePage) -> Self {
match page {
ResourcePage::Create => self.pages.create = false,
ResourcePage::View => self.pages.view = false,
}
self
}
}
#[derive(Clone, Copy, Debug)]
pub(crate) struct Pages {
pub(crate) create: bool,
pub(crate) view: bool,
pub(crate) edit: bool,
}
impl Default for Pages {
fn default() -> Self {
Self {
create: true,
view: true,
edit: true,
}
}
}
impl Pages {
pub(crate) fn served(declared: Self, has_form: bool) -> Self {
Self {
create: has_form && declared.create,
view: declared.view,
edit: has_form && declared.edit,
}
}
}