reactive_graph_tooling/tooling/instances/config/
graphql.rs

1use crate::shared::config::graphql::GraphQLServerConfigArgs;
2use crate::tooling::instances::config::serde::read_config_file;
3use crate::tooling::instances::config::serde::write_config_file;
4use reactive_graph_config_model::GraphQLServerConfig;
5use std::path::PathBuf;
6
7pub const GRAPHQL_CONFIG_FILENAME: &str = "graphql.toml";
8
9pub fn handle_graphql_config(config_dir: &PathBuf, args: GraphQLServerConfigArgs) -> anyhow::Result<()> {
10    let path = get_graphql_config_path(config_dir);
11    let mut config: GraphQLServerConfig = read_config_file(&path)?;
12    let mut changed = false;
13    if let Some(hostname) = args.hostname {
14        config.hostname = Some(hostname);
15        changed = true;
16    }
17    if let Some(port) = args.port {
18        config.port = Some(port);
19        changed = true;
20    }
21    if let Some(secure) = args.secure {
22        config.secure = Some(secure);
23        changed = true;
24    }
25    if let Some(default_context_path) = args.default_context_path {
26        config.default_context_path = Some(default_context_path);
27        changed = true;
28    }
29    if let Some(shutdown_timeout) = args.shutdown_timeout {
30        config.shutdown_timeout = Some(shutdown_timeout);
31        changed = true;
32    }
33    if let Some(ssl_certificate_path) = args.ssl_certificate_path {
34        config.ssl_certificate_path = Some(ssl_certificate_path);
35        changed = true;
36    }
37    if let Some(ssl_private_key_path) = args.ssl_private_key_path {
38        config.ssl_private_key_path = Some(ssl_private_key_path);
39        changed = true;
40    }
41    if let Some(workers) = args.workers {
42        config.workers = Some(workers);
43        changed = true;
44    }
45    if changed {
46        write_config_file(&path, config)?;
47    }
48
49    Ok(())
50}
51
52pub fn get_graphql_config_path(config_dir: &PathBuf) -> PathBuf {
53    let mut path = config_dir.to_owned();
54    path.push(GRAPHQL_CONFIG_FILENAME);
55    path
56}