subgraph/graphql/schema/create_entities/
mod.rs1use 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}