cynic_parser/executable/generated/
definition.rs1use 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}