From de56a1e6fb61a2dc9219f0e01e757a455a624b39 Mon Sep 17 00:00:00 2001 From: lemarwin Date: Sun, 27 Aug 2023 00:25:48 +0300 Subject: [PATCH 1/2] update sqlx to 0.7.1. Test Uuid compatibility --- append_db_postgres/Cargo.toml | 4 +++- .../migrations/0001_create_scheme.sql | 5 +++++ append_db_postgres/src/lib.rs | 19 +++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/append_db_postgres/Cargo.toml b/append_db_postgres/Cargo.toml index 8f1bfec..f391108 100644 --- a/append_db_postgres/Cargo.toml +++ b/append_db_postgres/Cargo.toml @@ -14,12 +14,14 @@ futures = "0.3.19" log = "0.4.14" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -sqlx = { version = "0.5", features = [ "runtime-tokio-rustls", "migrate", "macros", "postgres", "json", "chrono" ] } +sqlx = { version = "0.7.1", features = [ "runtime-tokio-rustls", "migrate", "macros", "postgres", "json", "chrono" ] } thiserror = "1.0.31" tokio = { version = "1", features = ["full"] } [dev-dependencies] sqlx-database-tester = { version = "0.2.0", features = [ "runtime-tokio" ] } +uuid = { version = "1.4.1", features = ["v4", "serde"] } +sqlx = { version = "0.7.1", features = [ "runtime-tokio-rustls", "migrate", "macros", "postgres", "json", "chrono", "uuid" ] } [features] derive = [] \ No newline at end of file diff --git a/append_db_postgres/migrations/0001_create_scheme.sql b/append_db_postgres/migrations/0001_create_scheme.sql index f51e7b5..34a65a5 100644 --- a/append_db_postgres/migrations/0001_create_scheme.sql +++ b/append_db_postgres/migrations/0001_create_scheme.sql @@ -12,4 +12,9 @@ create table updates2( version smallint not null, tag text not null, body jsonb not null +); + +create table uuid_test( + id serial primary key, + u_id uuid not null ); \ No newline at end of file diff --git a/append_db_postgres/src/lib.rs b/append_db_postgres/src/lib.rs index 29509af..2b7da59 100644 --- a/append_db_postgres/src/lib.rs +++ b/append_db_postgres/src/lib.rs @@ -15,10 +15,18 @@ mod tests { use append_db::db::AppendDb; use append_db_postgres_derive::*; use serde::{Deserialize, Serialize}; + use sqlx::{query_as, query_scalar, FromRow}; + use uuid::Uuid; use std::convert::Infallible; use std::ops::Deref; use crate as append_db_postgres; + #[derive(Clone, Debug, PartialEq, Serialize, Deserialize, FromRow)] + struct TestStruct { + id: i32, + u_id: Uuid + } + #[derive(Clone, Debug, PartialEq, Serialize, Deserialize, VersionedState)] struct State0 { field: u64, @@ -215,4 +223,15 @@ mod tests { db1.load().await.expect("load"); assert_eq!(db1.get().await.deref().field, "Hello world! ') drop table updates2;".to_string()); } + + #[sqlx_database_tester::test(pool(variable = "pool", migrations = "./migrations"))] + async fn uuid_test() { + let u_id = Uuid::new_v4(); + let id = query_scalar("insert into uuid_test (u_id) values ($1) returning id").bind(u_id).fetch_one(&pool).await; + assert!(id.is_ok(), "Failed to insert: {}", format!("{:?}",id)); + let id: i32 = id.unwrap(); + let v: Result = query_as("select * from uuid_test where id=$1").bind(id).fetch_one(&pool).await; + assert!(v.is_ok(), "Failed to select: {}", format!("{:?}",v)); + assert_eq!(v.unwrap(), TestStruct{id, u_id}, "Not equal objects") + } } From 201f51255298aa9f7e4e425686040aae44bafb08 Mon Sep 17 00:00:00 2001 From: lemarwin Date: Sun, 27 Aug 2023 00:26:37 +0300 Subject: [PATCH 2/2] clippy + fmt --- Cargo.lock | 934 +++++++++++++++++++++------ append_db/src/backend/class.rs | 2 +- append_db/src/backend/memory.rs | 2 +- append_db/src/db.rs | 2 +- append_db_postgres/src/backend.rs | 25 +- append_db_postgres/src/lib.rs | 108 +++- append_db_postgres_derive/src/lib.rs | 18 +- 7 files changed, 835 insertions(+), 256 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index bf5de0f..7052355 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,15 +4,37 @@ version = 3 [[package]] name = "ahash" -version = "0.7.6" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" dependencies = [ + "cfg-if", "getrandom", "once_cell", "version_check", ] +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "append_db" version = "0.1.0" @@ -39,6 +61,7 @@ dependencies = [ "sqlx-database-tester", "thiserror", "tokio", + "uuid 1.4.1", ] [[package]] @@ -48,7 +71,7 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "syn", + "syn 1.0.96", ] [[package]] @@ -59,14 +82,14 @@ checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.96", ] [[package]] name = "atoi" -version = "0.4.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616896e05fc0e2649463a93a15183c6a16bf03413a7af88ef1285ddedfa9cda5" +checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" dependencies = [ "num-traits", ] @@ -79,9 +102,15 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "base64" -version = "0.13.0" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "414dcefbc63d77c526a76b3afcf6fbb9b5e2791c19c3aa2297733208750c6e53" + +[[package]] +name = "base64ct" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bitflags" @@ -89,6 +118,15 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +dependencies = [ + "serde", +] + [[package]] name = "block-buffer" version = "0.10.2" @@ -118,9 +156,12 @@ checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" [[package]] name = "cc" -version = "1.0.73" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] [[package]] name = "cfg-if" @@ -130,24 +171,38 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.19" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" dependencies = [ - "libc", - "num-integer", + "android-tzdata", + "iana-time-zone", + "js-sys", "num-traits", "serde", "time", + "wasm-bindgen", "winapi", ] +[[package]] +name = "const-oid" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" + [[package]] name = "convert_case" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb4a24b1aaf0fd0ce8b45161144d6f42cd91677fd5940fd431183eb023b3a2b8" +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + [[package]] name = "cpufeatures" version = "0.2.2" @@ -159,18 +214,18 @@ dependencies = [ [[package]] name = "crc" -version = "2.1.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49fc9a695bca7f35f5f4c15cddc84415f66a74ea78eef08e90c5024f2b540e23" +checksum = "86ec7a15cbe22e59248fc7eadb1907dab5ba09372595da4d73dd805ed4417dfe" dependencies = [ "crc-catalog", ] [[package]] name = "crc-catalog" -version = "1.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccaeedb56da03b09f598226e25e80088cb4cd25f316e6e4df7d695f0feeb1403" +checksum = "9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484" [[package]] name = "crossbeam-queue" @@ -223,7 +278,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 1.0.96", ] [[package]] @@ -234,51 +289,90 @@ checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ "darling_core", "quote", - "syn", + "syn 1.0.96", +] + +[[package]] +name = "der" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", ] [[package]] name = "digest" -version = "0.10.3" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", + "const-oid", "crypto-common", "subtle", ] [[package]] -name = "dirs" -version = "4.0.0" +name = "dotenv" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + +[[package]] +name = "dotenvy" +version = "0.15.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" + +[[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" dependencies = [ - "dirs-sys", + "serde", ] [[package]] -name = "dirs-sys" -version = "0.3.7" +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" dependencies = [ + "errno-dragonfly", "libc", - "redox_users", - "winapi", + "windows-sys 0.48.0", ] [[package]] -name = "dotenv" -version = "0.15.0" +name = "errno-dragonfly" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] [[package]] -name = "either" -version = "1.6.1" +name = "etcetera" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" +dependencies = [ + "cfg-if", + "home", + "windows-sys 0.48.0", +] [[package]] name = "event-listener" @@ -286,6 +380,24 @@ version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71" +[[package]] +name = "fastrand" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" + +[[package]] +name = "flume" +version = "0.10.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" +dependencies = [ + "futures-core", + "futures-sink", + "pin-project", + "spin 0.9.8", +] + [[package]] name = "fnv" version = "1.0.7" @@ -346,20 +458,20 @@ dependencies = [ [[package]] name = "futures-intrusive" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62007592ac46aa7c2b6416f7deb9a8a8f63a01e0f1d6e1787d5630170db2b63e" +checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.11.2", + "parking_lot", ] [[package]] name = "futures-io" -version = "0.3.21" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" [[package]] name = "futures-macro" @@ -369,7 +481,7 @@ checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.96", ] [[package]] @@ -425,18 +537,19 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.11.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" dependencies = [ "ahash", + "allocator-api2", ] [[package]] name = "hashlink" -version = "0.7.0" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7249a3129cbc1ffccd74857f81464a323a152173cdb134e0fd81bc803b29facf" +checksum = "312f66718a2d7789ffef4f4b7b213138ed9f1eb3aa1d0d82fc99f88fb3ffd26f" dependencies = [ "hashbrown", ] @@ -483,6 +596,15 @@ dependencies = [ "digest", ] +[[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys 0.48.0", +] + [[package]] name = "http" version = "0.2.8" @@ -494,6 +616,29 @@ dependencies = [ "itoa", ] +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -513,23 +658,14 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.8.2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6012d540c5baa3589337a98ce73408de9b5a25ec9fc2c6fd6be8f0d39e0ca5a" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" dependencies = [ - "autocfg", + "equivalent", "hashbrown", ] -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - [[package]] name = "itertools" version = "0.10.3" @@ -559,12 +695,38 @@ name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin 0.5.2", +] [[package]] name = "libc" -version = "0.2.126" +version = "0.2.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "libm" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" + +[[package]] +name = "libsqlite3-sys" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" [[package]] name = "lock_api" @@ -621,7 +783,7 @@ dependencies = [ "libc", "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", + "windows-sys 0.36.1", ] [[package]] @@ -634,6 +796,23 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "num-bigint-dig" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand", + "smallvec", + "zeroize", +] + [[package]] name = "num-integer" version = "0.1.45" @@ -644,6 +823,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.15" @@ -651,6 +841,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -665,20 +856,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.12.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225" - -[[package]] -name = "parking_lot" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" -dependencies = [ - "instant", - "lock_api", - "parking_lot_core 0.8.5", -] +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "parking_lot" @@ -687,21 +867,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.3", -] - -[[package]] -name = "parking_lot_core" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" -dependencies = [ - "cfg-if", - "instant", - "libc", - "redox_syscall", - "smallvec", - "winapi", + "parking_lot_core", ] [[package]] @@ -712,9 +878,9 @@ checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.2.13", "smallvec", - "windows-sys", + "windows-sys 0.36.1", ] [[package]] @@ -723,12 +889,41 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +[[package]] +name = "pin-project" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + [[package]] name = "pin-project-lite" version = "0.2.9" @@ -741,6 +936,33 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs1" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8ffb9f10fa047879315e6625af03c164b16962a5368d724ed16323b68ace47f" +dependencies = [ + "der", + "pkcs8", + "spki", +] + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + [[package]] name = "ppv-lite86" version = "0.2.16" @@ -749,18 +971,18 @@ checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "proc-macro2" -version = "1.0.39" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.18" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -788,9 +1010,9 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ "getrandom", ] @@ -801,18 +1023,16 @@ version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] -name = "redox_users" -version = "0.4.3" +name = "redox_syscall" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ - "getrandom", - "redox_syscall", - "thiserror", + "bitflags 1.3.2", ] [[package]] @@ -824,23 +1044,75 @@ dependencies = [ "cc", "libc", "once_cell", - "spin", + "spin 0.5.2", "untrusted", "web-sys", "winapi", ] +[[package]] +name = "rsa" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ab43bb47d23c1a631b4b680199a45255dce26fa9ab2fa902581f624ff13e6a8" +dependencies = [ + "byteorder", + "const-oid", + "digest", + "num-bigint-dig", + "num-integer", + "num-iter", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core", + "signature", + "spki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustix" +version = "0.38.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bfe0f2582b4931a45d1fa608f8a8722e8b3c7ac54dd6d5f3b3212791fedef49" +dependencies = [ + "bitflags 2.4.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.48.0", +] + [[package]] name = "rustls" -version = "0.19.1" +version = "0.21.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" +checksum = "1d1feddffcfcc0b33f5c6ce9a29e341e4cd59c3f78e7ee45f4a40c038b1d6cbb" dependencies = [ - "base64", - "log", "ring", + "rustls-webpki", "sct", - "webpki", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +dependencies = [ + "base64", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d93931baf2d282fff8d3a532bbfd7653f734643161b87e3e01e59a04439bf0d" +dependencies = [ + "ring", + "untrusted", ] [[package]] @@ -857,9 +1129,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "sct" -version = "0.6.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" dependencies = [ "ring", "untrusted", @@ -867,29 +1139,29 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.137" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.137" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.29", ] [[package]] name = "serde_json" -version = "1.0.81" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" +checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" dependencies = [ "itoa", "ryu", @@ -897,10 +1169,10 @@ dependencies = [ ] [[package]] -name = "sha-1" -version = "0.10.0" +name = "sha1" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ "cfg-if", "cpufeatures", @@ -927,6 +1199,16 @@ dependencies = [ "libc", ] +[[package]] +name = "signature" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" +dependencies = [ + "digest", + "rand_core", +] + [[package]] name = "slab" version = "0.4.6" @@ -935,9 +1217,9 @@ checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" [[package]] name = "smallvec" -version = "1.8.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" [[package]] name = "socket2" @@ -955,11 +1237,30 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "spki" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +dependencies = [ + "base64ct", + "der", +] + [[package]] name = "sqlformat" -version = "0.1.8" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4b7922be017ee70900be125523f38bdd644f4f06a1b16e8fa5a8ee8c34bffd4" +checksum = "0c12bc9199d1db8234678b7051747c07f517cdcf019262d1847b94ec8b1aee3e" dependencies = [ "itertools", "nom", @@ -968,65 +1269,60 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.5.13" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "551873805652ba0d912fec5bbb0f8b4cdd96baf8e2ebf5970e5671092966019b" +checksum = "8e58421b6bc416714d5115a2ca953718f6c621a51b68e4f4922aea5a4391a721" dependencies = [ "sqlx-core", "sqlx-macros", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", ] [[package]] name = "sqlx-core" -version = "0.5.13" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48c61941ccf5ddcada342cd59e3e5173b007c509e1e8e990dafc830294d9dc5" +checksum = "dd4cef4251aabbae751a3710927945901ee1d97ee96d757f6880ebb9a79bfd53" dependencies = [ "ahash", "atoi", - "base64", - "bitflags", "byteorder", "bytes", "chrono", "crc", "crossbeam-queue", - "dirs", + "dotenvy", "either", "event-listener", "futures-channel", "futures-core", "futures-intrusive", + "futures-io", "futures-util", "hashlink", "hex", - "hkdf", - "hmac", "indexmap", - "itoa", - "libc", "log", - "md-5", "memchr", "once_cell", "paste", "percent-encoding", - "rand", "rustls", + "rustls-pemfile", "serde", "serde_json", - "sha-1", "sha2", "smallvec", "sqlformat", - "sqlx-rt", - "stringprep", "thiserror", + "tokio", "tokio-stream", + "tracing", "url", - "webpki", + "uuid 1.4.1", "webpki-roots", - "whoami", ] [[package]] @@ -1038,7 +1334,7 @@ dependencies = [ "dotenv", "http", "sqlx-database-tester-macros", - "uuid", + "uuid 0.8.2", ] [[package]] @@ -1050,38 +1346,155 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn", + "syn 1.0.96", ] [[package]] name = "sqlx-macros" -version = "0.5.13" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0fba2b0cae21fc00fe6046f8baa4c7fcb49e379f0f592b04696607f69ed2e1" +checksum = "208e3165167afd7f3881b16c1ef3f2af69fa75980897aac8874a0696516d12c2" dependencies = [ - "dotenv", + "proc-macro2", + "quote", + "sqlx-core", + "sqlx-macros-core", + "syn 1.0.96", +] + +[[package]] +name = "sqlx-macros-core" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a4a8336d278c62231d87f24e8a7a74898156e34c1c18942857be2acb29c7dfc" +dependencies = [ + "dotenvy", "either", "heck", + "hex", "once_cell", "proc-macro2", "quote", + "serde", "serde_json", "sha2", "sqlx-core", - "sqlx-rt", - "syn", + "sqlx-mysql", + "sqlx-postgres", + "sqlx-sqlite", + "syn 1.0.96", + "tempfile", + "tokio", "url", ] [[package]] -name = "sqlx-rt" -version = "0.5.13" +name = "sqlx-mysql" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca69bf415b93b60b80dc8fda3cb4ef52b2336614d8da2de5456cc942a110482" +dependencies = [ + "atoi", + "base64", + "bitflags 2.4.0", + "byteorder", + "bytes", + "chrono", + "crc", + "digest", + "dotenvy", + "either", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "generic-array", + "hex", + "hkdf", + "hmac", + "itoa", + "log", + "md-5", + "memchr", + "once_cell", + "percent-encoding", + "rand", + "rsa", + "serde", + "sha1", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "uuid 1.4.1", + "whoami", +] + +[[package]] +name = "sqlx-postgres" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4db708cd3e459078f85f39f96a00960bd841f66ee2a669e90bf36907f5a79aae" +checksum = "a0db2df1b8731c3651e204629dd55e52adbae0462fa1bdcbed56a2302c18181e" dependencies = [ + "atoi", + "base64", + "bitflags 2.4.0", + "byteorder", + "chrono", + "crc", + "dotenvy", + "etcetera", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "hex", + "hkdf", + "hmac", + "home", + "itoa", + "log", + "md-5", + "memchr", "once_cell", - "tokio", - "tokio-rustls", + "rand", + "serde", + "serde_json", + "sha1", + "sha2", + "smallvec", + "sqlx-core", + "stringprep", + "thiserror", + "tracing", + "uuid 1.4.1", + "whoami", +] + +[[package]] +name = "sqlx-sqlite" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4c21bf34c7cae5b283efb3ac1bcc7670df7561124dc2f8bdc0b59be40f79a2" +dependencies = [ + "atoi", + "chrono", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "libsqlite3-sys", + "log", + "percent-encoding", + "serde", + "sqlx-core", + "tracing", + "url", + "uuid 1.4.1", ] [[package]] @@ -1117,24 +1530,48 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "2.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tempfile" +version = "3.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +dependencies = [ + "cfg-if", + "fastrand", + "redox_syscall 0.3.5", + "rustix", + "windows-sys 0.48.0", +] + [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.29", ] [[package]] @@ -1175,7 +1612,7 @@ dependencies = [ "mio", "num_cpus", "once_cell", - "parking_lot 0.12.1", + "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2", @@ -1191,29 +1628,51 @@ checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.96", ] [[package]] -name = "tokio-rustls" -version = "0.22.0" +name = "tokio-stream" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" +checksum = "df54d54117d6fdc4e4fea40fe1e4e566b3505700e148a6827e59b34b0d2600d9" dependencies = [ - "rustls", + "futures-core", + "pin-project-lite", "tokio", - "webpki", ] [[package]] -name = "tokio-stream" -version = "0.1.9" +name = "tracing" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df54d54117d6fdc4e4fea40fe1e4e566b3505700e148a6827e59b34b0d2600d9" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ - "futures-core", + "cfg-if", + "log", "pin-project-lite", - "tokio", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", ] [[package]] @@ -1282,6 +1741,22 @@ dependencies = [ "getrandom", ] +[[package]] +name = "uuid" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + [[package]] name = "version_check" version = "0.9.4" @@ -1321,7 +1796,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn", + "syn 1.0.96", "wasm-bindgen-shared", ] @@ -1343,7 +1818,7 @@ checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.96", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1364,23 +1839,13 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webpki" -version = "0.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "webpki-roots" -version = "0.21.1" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" +checksum = "b291546d5d9d1eab74f069c77749f2cb8504a12caa20f0f2de93ddbf6f411888" dependencies = [ - "webpki", + "rustls-webpki", ] [[package]] @@ -1415,45 +1880,126 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-sys" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" dependencies = [ - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_msvc", + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.48.5", ] +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + [[package]] name = "windows_aarch64_msvc" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + [[package]] name = "windows_i686_gnu" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + [[package]] name = "windows_i686_msvc" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + [[package]] name = "windows_x86_64_gnu" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + [[package]] name = "windows_x86_64_msvc" version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "zeroize" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" diff --git a/append_db/src/backend/class.rs b/append_db/src/backend/class.rs index 2dfa33f..79e3177 100644 --- a/append_db/src/backend/class.rs +++ b/append_db/src/backend/class.rs @@ -28,7 +28,7 @@ pub trait State { /// Table holding updates const TABLE: &'static str = "updates"; - + /// Update the state with incremental part fn update(&mut self, upd: Self::Update) -> Result<(), Self::Err>; } diff --git a/append_db/src/backend/memory.rs b/append_db/src/backend/memory.rs index b07fc0c..d97c3ba 100644 --- a/append_db/src/backend/memory.rs +++ b/append_db/src/backend/memory.rs @@ -1,6 +1,6 @@ pub use crate::backend::class::{SnapshotedUpdate, State, StateBackend}; use async_trait::async_trait; -use std::{sync::Arc, convert::Infallible}; +use std::{convert::Infallible, sync::Arc}; use tokio::sync::Mutex; #[derive(Clone)] diff --git a/append_db/src/db.rs b/append_db/src/db.rs index c469c79..3ce827d 100644 --- a/append_db/src/db.rs +++ b/append_db/src/db.rs @@ -67,7 +67,7 @@ impl> AppendDb (s.clone(), 1), _ => (self.last_state.lock().await.deref().clone(), 0), }; - + for upd in &updates[start_index..] { match upd { SnapshotedUpdate::Snapshot(s) => state = s.clone(), diff --git a/append_db_postgres/src/backend.rs b/append_db_postgres/src/backend.rs index 6e53638..bc793af 100644 --- a/append_db_postgres/src/backend.rs +++ b/append_db_postgres/src/backend.rs @@ -3,13 +3,13 @@ pub use append_db::backend::class::{SnapshotedUpdate, State, StateBackend}; use async_trait::async_trait; use chrono::prelude::*; use futures::StreamExt; +use sqlx::Row; use std::borrow::Cow; use std::marker::PhantomData; use std::ops::Deref; use std::sync::Arc; use thiserror::Error; use tokio::sync::Mutex; -use sqlx::Row; /// Connection pool to Postgres pub type Pool = sqlx::Pool; @@ -39,10 +39,10 @@ impl Postgres { } /// Duplicates a connection to the same pool, casting St to St2 - pub fn duplicate(&self) -> Postgres{ - Postgres { - pool: self.pool.clone(), - state_proxy: PhantomData + pub fn duplicate(&self) -> Postgres { + Postgres { + pool: self.pool.clone(), + state_proxy: PhantomData, } } } @@ -61,7 +61,10 @@ impl< let tag = format!("{}", update.get_tag()); let body = update.serialize_untagged()?; let pool = self.pool.lock().await; - let query = format!("insert into {} (created, version, tag, body) values ($1, $2, $3, $4)", St::TABLE); + let query = format!( + "insert into {} (created, version, tag, body) values ($1, $2, $3, $4)", + St::TABLE + ); let query = sqlx::query(&query) .bind(now) .bind(update.get_version() as i16) @@ -74,11 +77,8 @@ impl< async fn updates(&self) -> Result>, Self::Err> { let pool = self.pool.lock().await; - let mut conn = pool.acquire().await?; let query = format!("select * from {} order by created desc", St::TABLE); - let res = sqlx::query(&query) - .fetch(&mut conn) - .fuse(); + let res = sqlx::query(&query).fetch(pool.deref()).fuse(); futures::pin_mut!(res); let mut parsed: Vec> = vec![]; loop { @@ -86,12 +86,11 @@ impl< mmrow = res.next() => { if let Some(mrow) = mmrow { let r = mrow?; - let body = >::deserialize_by_tag( + >::deserialize_by_tag( &Cow::Owned(r.try_get("tag")?), r.try_get::("version")? as u16, r.try_get("body")? - )?; - body + )? } else { break; } diff --git a/append_db_postgres/src/lib.rs b/append_db_postgres/src/lib.rs index 2b7da59..537cef7 100644 --- a/append_db_postgres/src/lib.rs +++ b/append_db_postgres/src/lib.rs @@ -1,30 +1,28 @@ pub mod backend; pub mod update; -pub use update::{HasUpdateTag, VersionedState}; #[cfg(feature = "derive")] pub use append_db_postgres_derive::*; +pub use update::{HasUpdateTag, VersionedState}; #[cfg(test)] mod tests { + use crate as append_db_postgres; use crate::backend::Postgres; - use crate::update::{ - HasUpdateTag, VersionedState, - }; + use crate::update::{HasUpdateTag, VersionedState}; use append_db::backend::class::{SnapshotedUpdate, State, StateBackend}; use append_db::db::AppendDb; use append_db_postgres_derive::*; use serde::{Deserialize, Serialize}; use sqlx::{query_as, query_scalar, FromRow}; - use uuid::Uuid; use std::convert::Infallible; use std::ops::Deref; - use crate as append_db_postgres; + use uuid::Uuid; #[derive(Clone, Debug, PartialEq, Serialize, Deserialize, FromRow)] struct TestStruct { id: i32, - u_id: Uuid + u_id: Uuid, } #[derive(Clone, Debug, PartialEq, Serialize, Deserialize, VersionedState)] @@ -34,13 +32,13 @@ mod tests { #[derive(Clone, Debug, PartialEq, Serialize, Deserialize, VersionedState)] struct State1 { - field: String + field: String, } #[derive(Clone, Debug, PartialEq, HasUpdateTag)] - enum Update1{ + enum Update1 { Append(String), - Set(String) + Set(String), } #[derive(Clone, Debug, PartialEq, HasUpdateTag)] @@ -91,11 +89,13 @@ mod tests { let db = AppendDb::new(postgres.clone(), state0.clone()); assert_eq!(db.get().await.deref(), &state0); - let state1 = State1 {field: String::new()}; + let state1 = State1 { + field: String::new(), + }; let postgres1 = postgres.duplicate(); let db = AppendDb::new(postgres1, state1.clone()); assert_eq!(db.get().await.deref(), &state1); - } + } #[sqlx_database_tester::test(pool(variable = "pool", migrations = "./migrations"))] async fn postgres_updates() { @@ -108,7 +108,7 @@ mod tests { } #[sqlx_database_tester::test(pool(variable = "pool", migrations = "./migrations"))] - async fn two_tables_test_updates(){ + async fn two_tables_test_updates() { let postgres = Postgres::new(pool); let state0 = State0 { field: 42 }; let mut db = AppendDb::new(postgres.clone(), state0.clone()); @@ -117,14 +117,20 @@ mod tests { db.update(Update0::Set(4)).await.expect("update"); assert_eq!(db.get().await.deref().field, 4); - let state1 = State1 {field: String::new()}; + let state1 = State1 { + field: String::new(), + }; let postgres1 = postgres.duplicate(); let mut db1 = AppendDb::new(postgres1, state1.clone()); - db1.update(Update1::Append("Hello".to_string())).await.expect("update"); + db1.update(Update1::Append("Hello".to_string())) + .await + .expect("update"); assert_eq!(db1.get().await.deref().field, "Hello".to_string()); - db1.update(Update1::Set("Hello world!".to_string())).await.expect("update"); - assert_eq!(db1.get().await.deref().field, "Hello world!".to_string()); - } + db1.update(Update1::Set("Hello world!".to_string())) + .await + .expect("update"); + assert_eq!(db1.get().await.deref().field, "Hello world!".to_string()); + } #[sqlx_database_tester::test(pool(variable = "pool", migrations = "./migrations"))] async fn postgres_snapshot() { @@ -149,13 +155,22 @@ mod tests { assert_eq!(upds, vec![SnapshotedUpdate::Snapshot(State0 { field: 43 })]); let postgres1 = postgres0.duplicate(); - let state1 = State1 { field: "Hello".to_string() }; + let state1 = State1 { + field: "Hello".to_string(), + }; let mut db1 = AppendDb::new(postgres1, state1.clone()); - db1.update(Update1::Append(" world!".to_string())).await.expect("update"); + db1.update(Update1::Append(" world!".to_string())) + .await + .expect("update"); db1.snapshot().await.expect("snapshot"); let upds1 = db1.backend.updates().await.expect("collected"); - assert_eq!(upds1, vec![SnapshotedUpdate::Snapshot(State1 { field: "Hello world!".to_string() })]); - } + assert_eq!( + upds1, + vec![SnapshotedUpdate::Snapshot(State1 { + field: "Hello world!".to_string() + })] + ); + } #[sqlx_database_tester::test(pool(variable = "pool", migrations = "./migrations"))] async fn postgres_reconstruct() { @@ -178,15 +193,21 @@ mod tests { db.load().await.expect("load"); assert_eq!(db.get().await.deref().field, 4); - let state1 = State1 {field: String::new()}; + let state1 = State1 { + field: String::new(), + }; let postgres1 = postgres.duplicate(); let mut db1 = AppendDb::new(postgres1, state1.clone()); - db1.update(Update1::Append("Hello".to_string())).await.expect("update"); - db1.update(Update1::Set("Hello world!".to_string())).await.expect("update"); + db1.update(Update1::Append("Hello".to_string())) + .await + .expect("update"); + db1.update(Update1::Set("Hello world!".to_string())) + .await + .expect("update"); db1.load().await.expect("load"); assert_eq!(db1.get().await.deref().field, "Hello world!".to_string()); - } + } #[sqlx_database_tester::test(pool(variable = "pool", migrations = "./migrations"))] async fn postgres_reconstruct_snapshot() { @@ -212,26 +233,43 @@ mod tests { db.load().await.expect("load"); assert_eq!(db.get().await.deref().field, 4); - let state1 = State1 {field: String::new()}; + let state1 = State1 { + field: String::new(), + }; let postgres1 = postgres.duplicate(); let mut db1 = AppendDb::new(postgres1, state1.clone()); - db1.update(Update1::Append("Hello ') drop table updates2;".to_string())).await.expect("update"); + db1.update(Update1::Append("Hello ') drop table updates2;".to_string())) + .await + .expect("update"); db1.snapshot().await.expect("snapshot"); - db1.update(Update1::Set("Hello world! ') drop table updates2;".to_string())).await.expect("update"); + db1.update(Update1::Set( + "Hello world! ') drop table updates2;".to_string(), + )) + .await + .expect("update"); db1.load().await.expect("load"); - assert_eq!(db1.get().await.deref().field, "Hello world! ') drop table updates2;".to_string()); + assert_eq!( + db1.get().await.deref().field, + "Hello world! ') drop table updates2;".to_string() + ); } #[sqlx_database_tester::test(pool(variable = "pool", migrations = "./migrations"))] async fn uuid_test() { let u_id = Uuid::new_v4(); - let id = query_scalar("insert into uuid_test (u_id) values ($1) returning id").bind(u_id).fetch_one(&pool).await; - assert!(id.is_ok(), "Failed to insert: {}", format!("{:?}",id)); + let id = query_scalar("insert into uuid_test (u_id) values ($1) returning id") + .bind(u_id) + .fetch_one(&pool) + .await; + assert!(id.is_ok(), "Failed to insert: {}", format!("{:?}", id)); let id: i32 = id.unwrap(); - let v: Result = query_as("select * from uuid_test where id=$1").bind(id).fetch_one(&pool).await; - assert!(v.is_ok(), "Failed to select: {}", format!("{:?}",v)); - assert_eq!(v.unwrap(), TestStruct{id, u_id}, "Not equal objects") + let v: Result = query_as("select * from uuid_test where id=$1") + .bind(id) + .fetch_one(&pool) + .await; + assert!(v.is_ok(), "Failed to select: {}", format!("{:?}", v)); + assert_eq!(v.unwrap(), TestStruct { id, u_id }, "Not equal objects") } } diff --git a/append_db_postgres_derive/src/lib.rs b/append_db_postgres_derive/src/lib.rs index bb7a714..139eece 100644 --- a/append_db_postgres_derive/src/lib.rs +++ b/append_db_postgres_derive/src/lib.rs @@ -137,18 +137,16 @@ fn impl_deserialize_by_tag(name: &syn::Ident, data: &syn::Data) -> TokenStream2 ))) }); } - + variant_checkers } fn impl_get_tag(name: &syn::Ident, data: &syn::Data) -> TokenStream2 { let mut matches = TokenStream2::new(); match data { - Data::Enum(data_enum) if data_enum.variants.is_empty() => { - matches.extend(quote! { - _ => todo!(), - }) - } + Data::Enum(data_enum) if data_enum.variants.is_empty() => matches.extend(quote! { + _ => todo!(), + }), Data::Enum(data_enum) => { for variant in data_enum.variants.iter() { // Variant's name @@ -181,11 +179,9 @@ fn impl_get_tag(name: &syn::Ident, data: &syn::Data) -> TokenStream2 { fn impl_serialize_untagged(name: &syn::Ident, data: &syn::Data) -> TokenStream2 { let mut matches = TokenStream2::new(); match data { - Data::Enum(data_enum) if data_enum.variants.is_empty() => { - matches.extend(quote! { - _ => todo!(), - }) - } + Data::Enum(data_enum) if data_enum.variants.is_empty() => matches.extend(quote! { + _ => todo!(), + }), Data::Enum(data_enum) => { for variant in data_enum.variants.iter() { // Variant's name