subgraph/graphql/schema/create_entities/
mod.rs

1use crate::{
2    configuration::subgraph::data_sources::sql::DialectEnum,
3    data_sources::{DataSource, DataSources},
4    resolver_type::ResolverType,
5};
6
7use super::ServiceSchema;
8use log::debug;
9
10mod create_entity_type_defs;
11mod create_resolver;
12
13impl ServiceSchema {
14    pub fn create_entities(mut self) -> Self {
15        debug!("Creating Entities Config");
16        debug!("Entities: {:?}", self.subgraph_config.service.entities);
17        let entities = self.subgraph_config.service.entities.clone();
18
19        for entity in entities.iter() {
20            self = self.create_entity_type_defs(entity);
21
22            let data_source = DataSources::get_entity_data_soruce(&self.data_sources, entity);
23
24            match data_source {
25                DataSource::SQL(ds) => match ds.config.dialect {
26                    DialectEnum::POSTGRES => {
27                        self = self.create_resolver(entity, ResolverType::FindOne);
28                        self = self.create_resolver(entity, ResolverType::FindMany);
29                        self = self.create_resolver(entity, ResolverType::CreateOne);
30                        self = self.create_resolver(entity, ResolverType::UpdateMany);
31                    }
32                    DialectEnum::MYSQL => {
33                        self = self.create_resolver(entity, ResolverType::FindOne);
34                        self = self.create_resolver(entity, ResolverType::FindMany);
35                        self = self.create_resolver(entity, ResolverType::CreateOne);
36                        self = self.create_resolver(entity, ResolverType::UpdateMany);
37                        self = self.create_resolver(entity, ResolverType::UpdateOne);
38                    }
39                    DialectEnum::SQLITE => {
40                        self = self.create_resolver(entity, ResolverType::FindOne);
41                        self = self.create_resolver(entity, ResolverType::FindMany);
42                        self = self.create_resolver(entity, ResolverType::CreateOne);
43                        self = self.create_resolver(entity, ResolverType::UpdateMany);
44                    }
45                },
46                DataSource::Mongo(_) | DataSource::HTTP(_) => {
47                    self = self.create_resolver(entity, ResolverType::FindOne);
48                    self = self.create_resolver(entity, ResolverType::FindMany);
49                    self = self.create_resolver(entity, ResolverType::CreateOne);
50                    self = self.create_resolver(entity, ResolverType::UpdateOne);
51                    self = self.create_resolver(entity, ResolverType::UpdateMany);
52                }
53            }
54        }
55
56        self
57    }
58}