use indexmap::{IndexMap, IndexSet}; use crate::database::schema::Schema; use serde::{Deserialize, Serialize}; use std::sync::Arc; use serde_json::Value; #[derive(Debug, Clone, Serialize, Deserialize, Default)] pub struct Roles { #[serde(default, skip_serializing_if = "Vec::is_empty")] pub read: Vec, #[serde(default, skip_serializing_if = "Vec::is_empty")] pub write: Vec, } #[derive(Debug, Clone, Serialize, Deserialize, Default)] #[serde(default)] pub struct Type { pub id: String, pub r#type: String, pub name: String, pub module: String, pub source: String, #[serde(default)] pub historical: bool, #[serde(default)] pub notify: bool, #[serde(default)] pub sensitive: bool, #[serde(default)] pub ownable: bool, pub longevity: Option, #[serde(default)] pub hierarchy: Vec, #[serde(default)] pub variations: IndexSet, #[serde(default)] pub relationship: bool, #[serde(default)] pub fields: Vec, pub grouped_fields: Option, #[serde(default)] pub lookup_fields: Vec, #[serde(default)] pub null_fields: Vec, #[serde(default)] pub field_defaults: IndexMap, pub field_types: Option, #[serde(skip_serializing_if = "Option::is_none")] pub roles: Option, #[serde(default)] pub schemas: IndexMap>, }