diff --git a/Cargo.lock b/Cargo.lock index a5b9d7b..47c8088 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -787,6 +787,29 @@ version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +[[package]] +name = "joinrs" +version = "0.0.1" +dependencies = [ + "anyhow", + "joinrs_proc", + "proc-macro2", + "quote", + "syn 2.0.51", + "thiserror", +] + +[[package]] +name = "joinrs_proc" +version = "0.0.1" +dependencies = [ + "anyhow", + "proc-macro2", + "quote", + "syn 2.0.51", + "thiserror", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -1406,13 +1429,12 @@ dependencies = [ name = "rust-forum-test" version = "0.1.0" dependencies = [ - "anyhow", "dotenv", + "joinrs", "rocket", "serde", "serde_json", "sqlx", - "sqly", "time", "uuid", ] @@ -1816,17 +1838,6 @@ dependencies = [ "uuid", ] -[[package]] -name = "sqly" -version = "0.0.1" -dependencies = [ - "anyhow", - "proc-macro2", - "quote", - "syn 2.0.51", - "thiserror", -] - [[package]] name = "stable-pattern" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index f2602c2..7bc1649 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,10 +13,10 @@ serde = { version = "1", features = ["derive"] } time = { version = "0.3.34" } uuid = { version = "1.7.0", features = ["v4", "serde"] } serde_json = "1.0.114" -sqly = { path = "sqly" } -anyhow = "1.0.81" # should not need this once sqly is in its own crate +joinrs = { path = "joinrs" } [workspace] members = [ - "sqly", + "joinrs_proc", + "joinrs" ] diff --git a/joinrs/Cargo.toml b/joinrs/Cargo.toml new file mode 100644 index 0000000..54666c9 --- /dev/null +++ b/joinrs/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "joinrs" +version = "0.0.1" +edition = "2021" + +[dependencies] +proc-macro2 = "1.0.78" +quote = "1.0.35" +syn = "2.0.51" +anyhow = "1.0.81" +thiserror = "1.0.58" +joinrs_proc = { path = "../joinrs_proc" } diff --git a/joinrs/src/lib.rs b/joinrs/src/lib.rs new file mode 100644 index 0000000..0bc7021 --- /dev/null +++ b/joinrs/src/lib.rs @@ -0,0 +1,16 @@ +pub use joinrs_proc::query_parsed; +pub use anyhow; + +mod err { + use thiserror::Error; + + #[derive(Error, Debug)] + pub enum QueryError { + #[error("Query returned no rows")] + RowNotFound, + #[error("Expected column {0} to have a value, but it was null")] + NullColumn(String), + #[error("Query returned too many rows, expected 1 but got {0}")] + TooManyRows(u32) + } +} diff --git a/sqly/Cargo.toml b/joinrs_proc/Cargo.toml similarity index 89% rename from sqly/Cargo.toml rename to joinrs_proc/Cargo.toml index 761c99a..df010e8 100644 --- a/sqly/Cargo.toml +++ b/joinrs_proc/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "sqly" +name = "joinrs_proc" version = "0.0.1" edition = "2021" diff --git a/sqly/src/lib.rs b/joinrs_proc/src/lib.rs similarity index 93% rename from sqly/src/lib.rs rename to joinrs_proc/src/lib.rs index 67ed0cc..1e9006a 100644 --- a/sqly/src/lib.rs +++ b/joinrs_proc/src/lib.rs @@ -5,21 +5,7 @@ use syn::{bracketed, parse_macro_input, Expr, Ident, LitStr, Token}; extern crate proc_macro; -extern crate self as sqly; - -mod err { - use thiserror::Error; - - #[derive(Error, Debug)] - pub enum QueryError { - #[error("Query returned no rows")] - RowNotFound, - #[error("Expected column {0} to have a value, but it was null")] - NullColumn(String), - #[error("Query returned too many rows, expected 1 but got {0}")] - TooManyRows(u32) - } -} +extern crate self as joinrs_proc; #[proc_macro] pub fn query_parsed(input: proc_macro::TokenStream) -> proc_macro::TokenStream { @@ -42,7 +28,7 @@ pub fn query_parsed(input: proc_macro::TokenStream) -> proc_macro::TokenStream { { let mut rows = #query; - let mut parse_closure = || -> anyhow::Result<#return_type> { + let mut parse_closure = || -> joinrs::anyhow::Result<#return_type> { if rows.len() < 1 { // anyhow::bail!(sqly::err::QueryError::RowNotFound) diff --git a/sqly/rust-toolchain.toml b/sqly/rust-toolchain.toml deleted file mode 100644 index 5d56faf..0000000 --- a/sqly/rust-toolchain.toml +++ /dev/null @@ -1,2 +0,0 @@ -[toolchain] -channel = "nightly" diff --git a/src/db/mod.rs b/src/db/mod.rs index cec33c8..63cc363 100644 --- a/src/db/mod.rs +++ b/src/db/mod.rs @@ -27,7 +27,7 @@ impl DB { } pub async fn get_site_data(&self) -> Result { - let site = sqly::query_parsed!( + let site = joinrs::query_parsed!( connection = &self.connection_pool, query = r#" select