Skip to main content

cynic_parser/executable/generated/
definition.rs

1use super::prelude::*;
2use super::{
3    ExecutableId,
4    fragment::FragmentDefinition,
5    ids::{ExecutableDefinitionId, FragmentDefinitionId, OperationDefinitionId},
6    operation::OperationDefinition,
7};
8#[allow(unused_imports)]
9use std::fmt::{self, Write};
10
11pub enum ExecutableDefinitionRecord {
12    Operation(OperationDefinitionId),
13    Fragment(FragmentDefinitionId),
14}
15
16#[derive(Clone, Copy, Debug)]
17pub enum ExecutableDefinition<'a> {
18    Operation(OperationDefinition<'a>),
19    Fragment(FragmentDefinition<'a>),
20}
21
22impl<'a> ExecutableDefinition<'a> {
23    pub fn is_operation(&self) -> bool {
24        matches!(self, ExecutableDefinition::Operation(_))
25    }
26
27    pub fn as_operation(self) -> Option<OperationDefinition<'a>> {
28        match self {
29            Self::Operation(inner) => Some(inner),
30            _ => None,
31        }
32    }
33
34    pub fn is_fragment(&self) -> bool {
35        matches!(self, ExecutableDefinition::Fragment(_))
36    }
37
38    pub fn as_fragment(self) -> Option<FragmentDefinition<'a>> {
39        match self {
40            Self::Fragment(inner) => Some(inner),
41            _ => None,
42        }
43    }
44}
45
46impl ExecutableId for ExecutableDefinitionId {
47    type Reader<'a> = ExecutableDefinition<'a>;
48    fn read(self, document: &ExecutableDocument) -> Self::Reader<'_> {
49        match document.lookup(self) {
50            ExecutableDefinitionRecord::Operation(id) => {
51                ExecutableDefinition::Operation(document.read(*id))
52            }
53            ExecutableDefinitionRecord::Fragment(id) => {
54                ExecutableDefinition::Fragment(document.read(*id))
55            }
56        }
57    }
58}
59
60impl IdReader for ExecutableDefinition<'_> {
61    type Id = ExecutableDefinitionId;
62    type Reader<'a> = ExecutableDefinition<'a>;
63    fn new(id: Self::Id, document: &'_ ExecutableDocument) -> Self::Reader<'_> {
64        document.read(id)
65    }
66}