From dc0774481b4786910e8e0b074663534aee0e776a Mon Sep 17 00:00:00 2001 From: David Overton Date: Thu, 14 Mar 2024 13:57:04 +1100 Subject: [PATCH] Move state module to common crate to avoid cli dependency on connector --- Cargo.lock | 1 - crates/cli/Cargo.toml | 1 - crates/cli/src/lib.rs | 8 +++++--- crates/cli/src/main.rs | 2 +- crates/configuration/src/read_directory.rs | 2 +- crates/mongodb-agent-common/src/lib.rs | 1 + .../src/state.rs | 2 +- crates/mongodb-connector/src/lib.rs | 1 - crates/mongodb-connector/src/main.rs | 1 - crates/mongodb-connector/src/mongo_connector.rs | 2 +- 10 files changed, 10 insertions(+), 11 deletions(-) rename crates/{mongodb-connector => mongodb-agent-common}/src/state.rs (90%) diff --git a/Cargo.lock b/Cargo.lock index c61788dc..69e0c073 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1533,7 +1533,6 @@ dependencies = [ "configuration", "mongodb", "mongodb-agent-common", - "mongodb-connector", "ndc-sdk", "serde_json", "thiserror", diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 3389960f..0276c347 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -9,7 +9,6 @@ path = "./src/main.rs" [dependencies] configuration = { path = "../configuration" } -mongodb-connector = { path = "../mongodb-connector" } mongodb-agent-common = { path = "../mongodb-agent-common" } mongodb = "2.8" ndc-sdk = { git = "https://github.com/hasura/ndc-hub.git" } diff --git a/crates/cli/src/lib.rs b/crates/cli/src/lib.rs index f2ef85fc..915f1ade 100644 --- a/crates/cli/src/lib.rs +++ b/crates/cli/src/lib.rs @@ -3,12 +3,13 @@ //! The CLI can do a few things. This provides a central point where those things are routed and //! then done, making it easier to test this crate deterministically. + use std::path::PathBuf; use clap::Subcommand; +use configuration::Configuration; use mongodb_agent_common::{interface_types::MongoConfig, schema::get_schema}; -use mongodb_connector::api_type_conversions::v2_schema_response_to_configuration; /// The command invoked by the user. #[derive(Debug, Clone, Subcommand)] @@ -64,9 +65,10 @@ pub async fn run(command: Command, context: &Context) -> anyhow::Result<()> { /// /// This expects a configuration with a valid connection URI. async fn update(context: &Context) -> anyhow::Result<()> { - let schema = get_schema(&context.mongo_config).await?; + // TODO: Get metadata directly from DB introspection instead of going via v2 get_schema() + let _schema = get_schema(&context.mongo_config).await?; - let configuration = v2_schema_response_to_configuration(schema); + let configuration = Configuration::default(); // v2_schema_response_to_configuration(schema); configuration::write_directory(&context.path, &configuration).await?; diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs index b129eaf0..81a79358 100644 --- a/crates/cli/src/main.rs +++ b/crates/cli/src/main.rs @@ -8,7 +8,7 @@ use std::env; use std::path::PathBuf; use clap::Parser; -use mongodb_connector::state::{try_init_state_from_uri, DATABASE_URI_ENV_VAR}; +use mongodb_agent_common::state::{try_init_state_from_uri, DATABASE_URI_ENV_VAR}; use mongodb_cli_plugin::{run, Command, Context}; /// The command-line arguments. diff --git a/crates/configuration/src/read_directory.rs b/crates/configuration/src/read_directory.rs index 0af1f8fa..87f8a100 100644 --- a/crates/configuration/src/read_directory.rs +++ b/crates/configuration/src/read_directory.rs @@ -8,7 +8,7 @@ use tokio::fs; use crate::Configuration; -pub const CONFIGURATION_FILENAME: &str = "configuration"; +pub const CONFIGURATION_FILENAME: &str = "metadata"; pub const CONFIGURATION_EXTENSIONS: [(&str, FileFormat); 3] = [("json", JSON), ("yaml", YAML), ("yml", YAML)]; pub const DEFAULT_EXTENSION: &str = "json"; diff --git a/crates/mongodb-agent-common/src/lib.rs b/crates/mongodb-agent-common/src/lib.rs index 57972fab..ab1585eb 100644 --- a/crates/mongodb-agent-common/src/lib.rs +++ b/crates/mongodb-agent-common/src/lib.rs @@ -8,3 +8,4 @@ pub mod mongodb_connection; pub mod query; pub mod scalar_types_capabilities; pub mod schema; +pub mod state; diff --git a/crates/mongodb-connector/src/state.rs b/crates/mongodb-agent-common/src/state.rs similarity index 90% rename from crates/mongodb-connector/src/state.rs rename to crates/mongodb-agent-common/src/state.rs index faca22c6..4ace391b 100644 --- a/crates/mongodb-connector/src/state.rs +++ b/crates/mongodb-agent-common/src/state.rs @@ -1,7 +1,7 @@ use std::{env, error::Error}; use anyhow::anyhow; -use mongodb_agent_common::{interface_types::MongoConfig, mongodb_connection::get_mongodb_client}; +use crate::{interface_types::MongoConfig, mongodb_connection::get_mongodb_client}; pub const DATABASE_URI_ENV_VAR: &str = "MONGODB_DATABASE_URI"; diff --git a/crates/mongodb-connector/src/lib.rs b/crates/mongodb-connector/src/lib.rs index dd960b3b..a9dc4eda 100644 --- a/crates/mongodb-connector/src/lib.rs +++ b/crates/mongodb-connector/src/lib.rs @@ -3,4 +3,3 @@ pub mod capabilities; pub mod error_mapping; pub mod mongo_connector; pub mod schema; -pub mod state; diff --git a/crates/mongodb-connector/src/main.rs b/crates/mongodb-connector/src/main.rs index d38f7ce1..26c46d0b 100644 --- a/crates/mongodb-connector/src/main.rs +++ b/crates/mongodb-connector/src/main.rs @@ -3,7 +3,6 @@ mod capabilities; mod error_mapping; mod mongo_connector; mod schema; -mod state; use std::error::Error; diff --git a/crates/mongodb-connector/src/mongo_connector.rs b/crates/mongodb-connector/src/mongo_connector.rs index 6a15e319..9edf4709 100644 --- a/crates/mongodb-connector/src/mongo_connector.rs +++ b/crates/mongodb-connector/src/mongo_connector.rs @@ -48,7 +48,7 @@ impl Connector for MongoConnector { _configuration: &Self::Configuration, _metrics: &mut prometheus::Registry, ) -> Result { - let state = crate::state::try_init_state().await?; + let state = mongodb_agent_common::state::try_init_state().await?; Ok(state) }