use super::object::{Container, Space}; use crate::scalars::Time; use crate::schema; #[derive(cynic::QueryFragment, Debug, Clone)] pub struct ObjectPermissions { pub guests: Vec, pub last_updated_ts: Time, pub anyone_link_sharing: Option, pub space: Space, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct ObjectGuest { pub access_level: AccessLevel, pub source: Option, pub subject: GuestSubject, } #[derive(cynic::InputObject, Debug)] pub struct Owner { pub uid: Option, #[cynic(rename = "type")] pub type_: OwnerType, } #[derive(cynic::Enum, Clone, Copy, Debug)] pub enum OwnerType { #[cynic(rename = "Team")] Team, #[cynic(rename = "User")] User, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct UserGuest { pub firebase_uid: cynic::Id, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct PendingUserGuest { pub email: Option, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct TeamGuest { pub uid: cynic::Id, } #[derive(cynic::InlineFragments, Debug, Clone)] pub enum GuestSubject { UserGuest(UserGuest), PendingUserGuest(PendingUserGuest), TeamGuest(TeamGuest), #[cynic(fallback)] Unknown, } #[derive(cynic::Enum, Clone, Copy, Debug, PartialEq)] pub enum AccessLevel { #[cynic(rename = "Editor")] Editor, #[cynic(rename = "Full")] Full, #[cynic(rename = "Viewer")] Viewer, } #[derive(cynic::QueryFragment, Debug, Clone)] pub struct LinkSharing { pub access_level: AccessLevel, pub source: Option, }