Files
galaxy/crates/graphql/src/api/object_permissions.rs
T

74 lines
1.6 KiB
Rust

use super::object::{Container, Space};
use crate::scalars::Time;
use crate::schema;
#[derive(cynic::QueryFragment, Debug, Clone)]
pub struct ObjectPermissions {
pub guests: Vec<ObjectGuest>,
pub last_updated_ts: Time,
pub anyone_link_sharing: Option<LinkSharing>,
pub space: Space,
}
#[derive(cynic::QueryFragment, Debug, Clone)]
pub struct ObjectGuest {
pub access_level: AccessLevel,
pub source: Option<Container>,
pub subject: GuestSubject,
}
#[derive(cynic::InputObject, Debug)]
pub struct Owner {
pub uid: Option<cynic::Id>,
#[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<String>,
}
#[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<Container>,
}