not really tested: split proc macro and structs

main
Ashelyn Dawn 2 months ago
parent 50110eb19f
commit 3dc28dca20

37
Cargo.lock generated

@ -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"

@ -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"
]

@ -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" }

@ -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)
}
}

@ -1,5 +1,5 @@
[package]
name = "sqly"
name = "joinrs_proc"
version = "0.0.1"
edition = "2021"

@ -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)

@ -1,2 +0,0 @@
[toolchain]
channel = "nightly"

@ -27,7 +27,7 @@ impl DB {
}
pub async fn get_site_data(&self) -> Result<Site, String> {
let site = sqly::query_parsed!(
let site = joinrs::query_parsed!(
connection = &self.connection_pool,
query = r#"
select

Loading…
Cancel
Save