use super::super::QueryType;
use crate::{graphql::ParsedQuery, security::OperationKind};
pub(in crate::runtime::executor) fn collect_authz_ops(
query_type: &QueryType,
parsed_for_regular: Option<&ParsedQuery>,
) -> Vec<(OperationKind, String)> {
match query_type {
QueryType::Regular => parsed_for_regular.map_or_else(Vec::new, |parsed| {
parsed
.selections
.iter()
.map(|sel| (OperationKind::Query, sel.name.clone()))
.collect()
}),
QueryType::Aggregate(name) | QueryType::Window(name) | QueryType::Federation(name) => {
vec![(OperationKind::Query, name.clone())]
},
QueryType::IntrospectionSchema => vec![(OperationKind::Query, "__schema".to_string())],
QueryType::IntrospectionType(_) => vec![(OperationKind::Query, "__type".to_string())],
QueryType::NodeQuery { .. } => vec![(OperationKind::Query, "node".to_string())],
QueryType::Mutation { .. } | QueryType::TypeName { .. } => Vec::new(),
}
}