diff --git a/Cargo.lock b/Cargo.lock index 737cee80d9..1303a2af85 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1776,6 +1776,8 @@ dependencies = [ "my-workspace-hack", "serde", "serde_derive", + "sqlx", + "tokio", ] [[package]] diff --git a/crates/_types/enums/tests/list_available_api_tokens_for_user.rs b/crates/_types/enums/tests/list_available_api_tokens_for_user.rs index 8d79dbae8d..1e8f7e2669 100644 --- a/crates/_types/enums/tests/list_available_api_tokens_for_user.rs +++ b/crates/_types/enums/tests/list_available_api_tokens_for_user.rs @@ -1,5 +1,9 @@ use chrono::Utc; use sqlx::MySqlPool; +use sqlx_core::any::AnyConnectionBackend; +use sqlx_core::connection::Connection; + +use sqlx::{MySqlConnection, Executor}; use errors::AnyhowResult; diff --git a/crates/cli/production/db-backup/Cargo.toml b/crates/cli/production/db-backup/Cargo.toml index 5ea4ee3d44..e78ee9b653 100644 --- a/crates/cli/production/db-backup/Cargo.toml +++ b/crates/cli/production/db-backup/Cargo.toml @@ -16,12 +16,15 @@ path = "src/main.rs" normal = ["my-workspace-hack"] [dependencies] +# Workspace hack (faster compile times) +my-workspace-hack = { version = "0.1", path = "../../../my-workspace-hack" } + # Internal easyenv = { path = "../../../lib/easyenv" } errors = { path = "../../../lib/errors" } -# Workspace hack (faster compile times) -my-workspace-hack = { version = "0.1", path = "../../../my-workspace-hack" } +sqlx = { version = "0.8.2", features = [ "mysql", "runtime-tokio", "tls-rustls", "chrono" ] } +tokio = { version = "1.38.0", features = ["macros"] } # External anyhow = "1.0.86" diff --git a/crates/cli/production/db-backup/src/main.rs b/crates/cli/production/db-backup/src/main.rs index cff06bcbf6..e10f06ab53 100644 --- a/crates/cli/production/db-backup/src/main.rs +++ b/crates/cli/production/db-backup/src/main.rs @@ -1,12 +1,23 @@ use log::info; use easyenv::init_all_with_default_logging; +use sqlx::{MySqlConnection, Executor, Connection}; use errors::AnyhowResult; -fn main() -> AnyhowResult<()> { +#[tokio::main] +async fn main() -> AnyhowResult<()> { init_all_with_default_logging(None); info!("TODO..."); + let url = "mysql://storyteller:password@localhost/storyteller"; + let mut conn = MySqlConnection::connect(url).await.unwrap(); + + // This is the method the macros use. It's hidden in the docs because it's not considered part of the stable API. + let describe = conn.describe("SELECT internal_token FROM api_tokens").await.unwrap(); + + println!("describe output: {:?}", describe); + assert_eq!(1,2); + Ok(()) -} \ No newline at end of file +}