From e3999d878812e80841a6464a5b674f976feb7528 Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Thu, 2 Feb 2023 10:48:12 +0100 Subject: [PATCH 1/6] data: postgres, use any. --- sfy-data/Cargo.lock | 298 ++++++++++++++++++++++++++++++++++----- sfy-data/Cargo.toml | 2 +- sfy-data/sfy-data.toml | 2 +- sfy-data/src/config.rs | 2 +- sfy-data/src/database.rs | 24 +--- sfy-data/src/main.rs | 2 +- 6 files changed, 271 insertions(+), 59 deletions(-) diff --git a/sfy-data/Cargo.lock b/sfy-data/Cargo.lock index 66da5254..fb334146 100644 --- a/sfy-data/Cargo.lock +++ b/sfy-data/Cargo.lock @@ -54,7 +54,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "be69f70ef5497dd6ab331a50bd95c6ac6b8f7f17a7967838332743fbd58dc3b5" dependencies = [ "argh_shared", - "heck", + "heck 0.3.3", "proc-macro2", "quote", "syn", @@ -68,9 +68,9 @@ checksum = "e6f8c380fa28aa1b36107cd97f0196474bb7241bb95a453c5c01a15ac74b2eac" [[package]] name = "atoi" -version = "0.4.0" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616896e05fc0e2649463a93a15183c6a16bf03413a7af88ef1285ddedfa9cda5" +checksum = "d7c57d12312ff59c811c0643f4d80830505833c9ffaebd193d819392b265be8e" dependencies = [ "num-traits", ] @@ -128,6 +128,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "block-buffer" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" +dependencies = [ + "generic-array", +] + [[package]] name = "bstr" version = "0.2.17" @@ -150,6 +159,12 @@ dependencies = [ "safemem", ] +[[package]] +name = "bumpalo" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" + [[package]] name = "byteorder" version = "1.4.3" @@ -240,18 +255,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" @@ -273,6 +288,16 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + [[package]] name = "csv" version = "1.1.6" @@ -305,10 +330,41 @@ dependencies = [ ] [[package]] -name = "dotenv" -version = "0.15.0" +name = "digest" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" +dependencies = [ + "block-buffer 0.10.3", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dotenvy" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03d8c417d7a8cb362e0c37e5d815f5eb7c37f79ff93707329d5a194e42e54ca0" [[package]] name = "either" @@ -332,6 +388,12 @@ dependencies = [ "termcolor", ] +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + [[package]] name = "eyre" version = "0.6.5" @@ -512,17 +574,23 @@ name = "hashbrown" version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ "ahash", ] [[package]] name = "hashlink" -version = "0.7.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7249a3129cbc1ffccd74857f81464a323a152173cdb134e0fd81bc803b29facf" +checksum = "69fe1fcf8b4278d860ad0548329f892a3631fb63f82574df68275f34cdbe0ffa" dependencies = [ - "hashbrown", + "hashbrown 0.12.3", ] [[package]] @@ -559,6 +627,15 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "hermit-abi" version = "0.1.19" @@ -574,6 +651,24 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hkdf" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.6", +] + [[package]] name = "http" version = "0.2.5" @@ -662,7 +757,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" dependencies = [ "autocfg", - "hashbrown", + "hashbrown 0.11.2", ] [[package]] @@ -695,6 +790,15 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +[[package]] +name = "js-sys" +version = "0.3.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27" +dependencies = [ + "wasm-bindgen", +] + [[package]] name = "lazy_static" version = "1.4.0" @@ -709,9 +813,9 @@ checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125" [[package]] name = "libsqlite3-sys" -version = "0.23.2" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cafc7c74096c336d9d27145f7ebd4f4b6f95ba16aa5a282387267e6925cb58" +checksum = "898745e570c7d0453cc1fbc4a701eb6c662ed54e8fec8b7d14be137ebeeb9d14" dependencies = [ "cc", "pkg-config", @@ -742,6 +846,15 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" +[[package]] +name = "md-5" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +dependencies = [ + "digest 0.10.6", +] + [[package]] name = "memchr" version = "2.4.1" @@ -1093,13 +1206,24 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.10" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ "bitflags", ] +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom", + "redox_syscall", + "thiserror", +] + [[package]] name = "regex" version = "1.5.6" @@ -1289,24 +1413,33 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" dependencies = [ - "block-buffer", + "block-buffer 0.9.0", "cfg-if", "cpufeatures", - "digest", + "digest 0.9.0", "opaque-debug", ] +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.6", +] + [[package]] name = "sha2" -version = "0.9.9" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ - "block-buffer", "cfg-if", "cpufeatures", - "digest", - "opaque-debug", + "digest 0.10.6", ] [[package]] @@ -1360,9 +1493,9 @@ dependencies = [ [[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", @@ -1371,9 +1504,9 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.5.11" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc15591eb44ffb5816a4a70a7efd5dd87bfd3aa84c4c200401c4396140525826" +checksum = "9249290c05928352f71c077cc44a464d880c63f26f7534728cca008e135c0428" dependencies = [ "sqlx-core", "sqlx-macros", @@ -1381,19 +1514,23 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.5.11" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "195183bf6ff8328bb82c0511a83faf60aacf75840103388851db61d7a9854ae3" +checksum = "dcbc16ddba161afc99e14d1713a453747a2b07fc097d2009f4c300ec99286105" dependencies = [ "ahash", "atoi", + "base64", "bitflags", "byteorder", "bytes", "chrono", "crc", "crossbeam-queue", + "dirs", + "dotenvy", "either", + "event-listener", "flume", "futures-channel", "futures-core", @@ -1402,16 +1539,22 @@ dependencies = [ "futures-util", "hashlink", "hex", + "hkdf", + "hmac", "indexmap", "itoa 1.0.1", "libc", "libsqlite3-sys", "log", + "md-5", "memchr", "once_cell", "paste", "percent-encoding", + "rand", "serde", + "serde_json", + "sha1", "sha2", "smallvec", "sqlformat", @@ -1420,17 +1563,18 @@ dependencies = [ "thiserror", "tokio-stream", "url", + "whoami", ] [[package]] name = "sqlx-macros" -version = "0.5.11" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eee35713129561f5e55c554bba1c378e2a7e67f81257b7311183de98c50e6f94" +checksum = "b850fa514dc11f2ee85be9d055c512aa866746adfacd1cb42d867d68e6a5b0d9" dependencies = [ - "dotenv", + "dotenvy", "either", - "heck", + "heck 0.4.0", "hex", "once_cell", "proc-macro2", @@ -1446,9 +1590,9 @@ dependencies = [ [[package]] name = "sqlx-rt" -version = "0.5.11" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b555e70fbbf84e269ec3858b7a6515bcfe7a166a7cc9c636dd6efd20431678b6" +checksum = "24c5b2d25fa654cc5f841750b8e1cdedbe21189bf9a9382ee90bfa9dd3562396" dependencies = [ "native-tls", "once_cell", @@ -1466,6 +1610,12 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + [[package]] name = "syn" version = "1.0.91" @@ -1849,6 +1999,80 @@ version = "0.10.2+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +[[package]] +name = "wasm-bindgen" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be" + +[[package]] +name = "web-sys" +version = "0.3.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "whoami" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45dbc71f0cdca27dc261a9bd37ddec174e4a0af2b900b890f378460f745426e3" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + [[package]] name = "winapi" version = "0.3.9" diff --git a/sfy-data/Cargo.toml b/sfy-data/Cargo.toml index 44210e10..d1fd5eb7 100644 --- a/sfy-data/Cargo.toml +++ b/sfy-data/Cargo.toml @@ -21,7 +21,7 @@ bytes = "1.1.0" futures-util = "0.3.18" serde_json = "1.0.72" sanitize-filename = "0.3.0" -sqlx = { version = "0.5.11", features = [ "runtime-tokio-native-tls", "sqlite", "macros", "migrate", "offline", "chrono" ] } +sqlx = { version = "0.6", features = [ "runtime-tokio-native-tls", "sqlite", "postgres", "any", "macros", "migrate", "offline", "chrono" ] } percent-encoding = "2.1.0" base64 = "0.13.0" diff --git a/sfy-data/sfy-data.toml b/sfy-data/sfy-data.toml index ce5d37f7..313571df 100644 --- a/sfy-data/sfy-data.toml +++ b/sfy-data/sfy-data.toml @@ -1,5 +1,5 @@ address = "0.0.0.0:3000" -database = "sfy-data.db" +database = "sqlite://sfy-data.db" tokens = [ "thicaige6oagh3izohvie5Piech9cu5eiweuk5eumoh4aeshooXaghefeme2aizohnohtoowaequ1Ieghuoc8aboj8owuiPai8johthaif8chie1tahgh9in" ] diff --git a/sfy-data/src/config.rs b/sfy-data/src/config.rs index 675fe53c..8b1a5a88 100644 --- a/sfy-data/src/config.rs +++ b/sfy-data/src/config.rs @@ -7,7 +7,7 @@ use std::path::PathBuf; #[derive(Debug, Serialize, Deserialize, Clone)] pub struct Config { pub address: SocketAddr, - pub database: Option, + pub database: Option, pub tokens: Vec, pub read_tokens: Vec, pub files: Option, diff --git a/sfy-data/src/database.rs b/sfy-data/src/database.rs index 5f09a52e..22f68d44 100644 --- a/sfy-data/src/database.rs +++ b/sfy-data/src/database.rs @@ -1,14 +1,12 @@ use eyre::Result; use serde::{Deserialize, Serialize}; -use sqlx::sqlite::{ - SqliteConnectOptions, SqliteJournalMode, SqlitePool, SqlitePoolOptions, SqliteSynchronous, -}; +use sqlx::AnyPool; use std::path::{Path, PathBuf}; use std::str::FromStr; #[derive(Debug)] pub struct Database { - db: SqlitePool, + db: AnyPool, } #[derive(Debug, PartialEq, Clone, Copy)] @@ -81,20 +79,10 @@ impl Into for OmbMessageType { } impl Database { - pub async fn open(path: impl AsRef) -> Result { - let path: PathBuf = path.as_ref().into(); + pub async fn open(path: &str) -> Result { info!("opening database at: {:?}", path); - let db = SqliteConnectOptions::from_str(&format!("sqlite:{}", path.to_string_lossy()))? - .create_if_missing(true) - .journal_mode(SqliteJournalMode::Wal) - .synchronous(SqliteSynchronous::Normal) - .shared_cache(true) - .page_size(10 * 1024) - .pragma("cache_size", "-20000") // multiple of page_size - .pragma("mmap_size", "3000000000") - .pragma("temp_store", "memory"); - let db = SqlitePoolOptions::new().connect_with(db).await?; + let db = AnyPool::connect(path).await?; info!("running db migrations.."); sqlx::migrate!("./migrations").run(&db).await?; @@ -163,7 +151,7 @@ impl Database { pub async fn temporary() -> Database { warn!("create temporary database at in memory"); - Database::open(":memory:").await.unwrap() + Database::open("sqlite::memory:").await.unwrap() } } @@ -174,7 +162,7 @@ pub struct Buoy { known: bool, name: Option, buoy_type: BuoyType, - db: SqlitePool, + db: AnyPool, } #[derive(Debug, Serialize, Deserialize, PartialEq)] diff --git a/sfy-data/src/main.rs b/sfy-data/src/main.rs index deaeecff..d1506a63 100644 --- a/sfy-data/src/main.rs +++ b/sfy-data/src/main.rs @@ -45,7 +45,7 @@ async fn main() -> eyre::Result<()> { let config = config::Config::from_path(sfy.config); let database = config.database.clone().expect("no database path specified"); - let database = database::Database::open(database).await?; + let database = database::Database::open(&database).await?; let state = Arc::new(SfyState { db: database, From 6883c4b5c7cd108ddd68032c46bce3c4c0497718 Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Mon, 6 Feb 2023 10:24:42 +0100 Subject: [PATCH 2/6] split migrations (sqlite, postgres) --- .../migrations/postgres/20230203114910_postgres_init.sql | 8 ++++++++ sfy-data/migrations/{ => sqlite}/20220506075859_init.sql | 0 .../{ => sqlite}/20220509075355_events-not-null.sql | 0 .../{ => sqlite}/20220531170643_openmetbuoy.sql | 0 .../{ => sqlite}/20220820154509_file-column.sql | 0 5 files changed, 8 insertions(+) create mode 100644 sfy-data/migrations/postgres/20230203114910_postgres_init.sql rename sfy-data/migrations/{ => sqlite}/20220506075859_init.sql (100%) rename sfy-data/migrations/{ => sqlite}/20220509075355_events-not-null.sql (100%) rename sfy-data/migrations/{ => sqlite}/20220531170643_openmetbuoy.sql (100%) rename sfy-data/migrations/{ => sqlite}/20220820154509_file-column.sql (100%) diff --git a/sfy-data/migrations/postgres/20230203114910_postgres_init.sql b/sfy-data/migrations/postgres/20230203114910_postgres_init.sql new file mode 100644 index 00000000..12fc324f --- /dev/null +++ b/sfy-data/migrations/postgres/20230203114910_postgres_init.sql @@ -0,0 +1,8 @@ +-- Add migration script here +CREATE TABLE IF NOT EXISTS buoys (dev TEXT NOT NULL, name TEXT, buoy_type TEXT NOT NULL, PRIMARY KEY (dev, buoy_type)); + +CREATE TABLE events (dev TEXT, event TEXT NOT NULL, received BIGINT NOT NULL, message_type TEXT NOT NULL, data BYTEA, PRIMARY KEY (dev, event)); +CREATE TABLE IF NOT EXISTS omb_events (dev TEXT NOT NULL, account TEXT, event SERIAL PRIMARY KEY, received BIGINT NOT NULL, message_type TEXT NOT NULL, data BYTEA); + +CREATE INDEX sfy_message_type ON events (dev, received, message_type); +CREATE INDEX omb_message_type ON omb_events (dev, received, message_type); diff --git a/sfy-data/migrations/20220506075859_init.sql b/sfy-data/migrations/sqlite/20220506075859_init.sql similarity index 100% rename from sfy-data/migrations/20220506075859_init.sql rename to sfy-data/migrations/sqlite/20220506075859_init.sql diff --git a/sfy-data/migrations/20220509075355_events-not-null.sql b/sfy-data/migrations/sqlite/20220509075355_events-not-null.sql similarity index 100% rename from sfy-data/migrations/20220509075355_events-not-null.sql rename to sfy-data/migrations/sqlite/20220509075355_events-not-null.sql diff --git a/sfy-data/migrations/20220531170643_openmetbuoy.sql b/sfy-data/migrations/sqlite/20220531170643_openmetbuoy.sql similarity index 100% rename from sfy-data/migrations/20220531170643_openmetbuoy.sql rename to sfy-data/migrations/sqlite/20220531170643_openmetbuoy.sql diff --git a/sfy-data/migrations/20220820154509_file-column.sql b/sfy-data/migrations/sqlite/20220820154509_file-column.sql similarity index 100% rename from sfy-data/migrations/20220820154509_file-column.sql rename to sfy-data/migrations/sqlite/20220820154509_file-column.sql From 9fb2b5ba3664c58aa1ada2279234f0a1d4b3a081 Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Mon, 6 Feb 2023 10:30:13 +0100 Subject: [PATCH 3/6] db: add postgres support --- sfy-data/.env | 1 + sfy-data/Cargo.lock | 874 +++++++++++++++++++++++---------------- sfy-data/Cargo.toml | 5 + sfy-data/sfy-data.toml | 3 +- sfy-data/sqlx-data.json | 250 +++++------ sfy-data/src/database.rs | 125 ++++-- 6 files changed, 753 insertions(+), 505 deletions(-) diff --git a/sfy-data/.env b/sfy-data/.env index cc360203..32505457 100644 --- a/sfy-data/.env +++ b/sfy-data/.env @@ -1,2 +1,3 @@ DATABASE_URL=sqlite:test.db +# DATABASE_URL=postgres://postgres:sfytest@localhost/postgres SQLX_OFFLINE=1 diff --git a/sfy-data/Cargo.lock b/sfy-data/Cargo.lock index fb334146..6a022907 100644 --- a/sfy-data/Cargo.lock +++ b/sfy-data/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.17.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" dependencies = [ "gimli", ] @@ -30,18 +30,27 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.18" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" dependencies = [ "memchr", ] +[[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 = "argh" -version = "0.1.7" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb41d85d92dfab96cb95ab023c265c5e4261bb956c0fb49ca06d90c570f1958" +checksum = "ab257697eb9496bf75526f0217b5ed64636a9cfafa78b8365c71bd283fcef93e" dependencies = [ "argh_derive", "argh_shared", @@ -49,12 +58,11 @@ dependencies = [ [[package]] name = "argh_derive" -version = "0.1.7" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be69f70ef5497dd6ab331a50bd95c6ac6b8f7f17a7967838332743fbd58dc3b5" +checksum = "b382dbd3288e053331f03399e1db106c9fb0d8562ad62cb04859ae926f324fa6" dependencies = [ "argh_shared", - "heck 0.3.3", "proc-macro2", "quote", "syn", @@ -62,9 +70,9 @@ dependencies = [ [[package]] name = "argh_shared" -version = "0.1.7" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6f8c380fa28aa1b36107cd97f0196474bb7241bb95a453c5c01a15ac74b2eac" +checksum = "64cb94155d965e3d37ffbbe7cc5b82c3dd79dd33bd48e536f73d2cfb8d85506f" [[package]] name = "atoi" @@ -81,22 +89,22 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] [[package]] name = "autocfg" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.63" +version = "0.3.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "321629d8ba6513061f26707241fa9bc89524ff1cd7a915a97ef0c62c666ce1b6" +checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" dependencies = [ "addr2line", "cc", @@ -109,9 +117,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "bitflags" @@ -119,15 +127,6 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", -] - [[package]] name = "block-buffer" version = "0.10.3" @@ -173,15 +172,15 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] name = "cc" -version = "1.0.72" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" [[package]] name = "cfg-if" @@ -191,16 +190,26 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.19" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "16b0a3d9ed01224b22057780a37bb8c5dbfe1be8ba48678e7bf57ec4b385411f" dependencies = [ - "libc", + "iana-time-zone", "num-integer", "num-traits", "winapi", ] +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + [[package]] name = "color-eyre" version = "0.5.11" @@ -246,9 +255,9 @@ checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "cpufeatures" -version = "0.2.1" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +checksum = "28d997bd5e24a5928dd43e46dc529867e207907fe0b239c3477d924f7f2ca320" dependencies = [ "libc", ] @@ -270,9 +279,9 @@ checksum = "9cace84e55f07e7301bae1c519df89cdad8cc3cd868413d3fdbdeca9ff3db484" [[package]] name = "crossbeam-queue" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f25d8400f4a7a5778f0e4e52384a48cbd9b5c495d110786187fc750075277a2" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" dependencies = [ "cfg-if", "crossbeam-utils", @@ -280,12 +289,11 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.8" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" +checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" dependencies = [ "cfg-if", - "lazy_static", ] [[package]] @@ -321,12 +329,47 @@ dependencies = [ ] [[package]] -name = "digest" -version = "0.9.0" +name = "cxx" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +checksum = "bc831ee6a32dd495436e317595e639a587aa9907bef96fe6e6abc290ab6204e9" dependencies = [ - "generic-array", + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94331d54f1b1a8895cd81049f7eaaaef9d05a7dcb4d1fd08bf3ff0806246789d" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2", + "quote", + "scratch", + "syn", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48dcd35ba14ca9b40d6e4b4b39961f23d835dbb8eed74565ded361d93e1feb8a" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81bbeb29798b407ccd82a3324ade1a7286e0d29851475990b612670f6f5124d2" +dependencies = [ + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -335,7 +378,7 @@ version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" dependencies = [ - "block-buffer 0.10.3", + "block-buffer", "crypto-common", "subtle", ] @@ -368,18 +411,18 @@ checksum = "03d8c417d7a8cb362e0c37e5d815f5eb7c37f79ff93707329d5a194e42e54ca0" [[package]] name = "either" -version = "1.6.1" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" dependencies = [ "serde", ] [[package]] name = "env_logger" -version = "0.9.0" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" dependencies = [ "atty", "humantime", @@ -396,19 +439,28 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "eyre" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "221239d1d5ea86bf5d6f91c9d6bc3646ffe471b08ff9b0f91c44f115ac969d2b" +checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb" dependencies = [ "indenter", "once_cell", ] +[[package]] +name = "fastrand" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + [[package]] name = "flume" -version = "0.10.12" +version = "0.10.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843c03199d0c0ca54bc1ea90ac0d507274c28abcc4f691ae8b4eaa375087c76a" +checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" dependencies = [ "futures-core", "futures-sink", @@ -439,19 +491,18 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" dependencies = [ - "matches", "percent-encoding", ] [[package]] name = "futures-channel" -version = "0.3.19" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3dda0b6588335f360afc675d0564c17a77a2bda81ca178a4b6081bd86c7f0b" +checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5" dependencies = [ "futures-core", "futures-sink", @@ -459,15 +510,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.19" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c8ff0461b82559810cdccfde3215c3f373807f5e5232b71479bff7bb2583d7" +checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" [[package]] name = "futures-executor" -version = "0.3.19" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29d6d2ff5bb10fb95c85b8ce46538a2e5f5e7fdc755623a7d4529ab8a4ed9d2a" +checksum = "e8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50e" dependencies = [ "futures-core", "futures-task", @@ -476,20 +527,20 @@ dependencies = [ [[package]] name = "futures-intrusive" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62007592ac46aa7c2b6416f7deb9a8a8f63a01e0f1d6e1787d5630170db2b63e" +checksum = "a604f7a68fbf8103337523b1fadc8ade7361ee3f112f7c680ad179651616aed5" dependencies = [ "futures-core", "lock_api", - "parking_lot", + "parking_lot 0.11.2", ] [[package]] name = "futures-macro" -version = "0.3.19" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbd947adfffb0efc70599b3ddcf7b5597bb5fa9e245eb99f62b3a5f7bb8bd3c" +checksum = "95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70" dependencies = [ "proc-macro2", "quote", @@ -498,21 +549,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.19" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3055baccb68d74ff6480350f8d6eb8fcfa3aa11bdc1a1ae3afdd0514617d508" +checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364" [[package]] name = "futures-task" -version = "0.3.19" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ee7c6485c30167ce4dfb83ac568a849fe53274c831081476ee13e0dce1aad72" +checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366" [[package]] name = "futures-util" -version = "0.3.19" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b5cf40b47a271f77a8b1bec03ca09044d99d2372c0de244e66430761127164" +checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1" dependencies = [ "futures-core", "futures-macro", @@ -525,9 +576,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.4" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" dependencies = [ "typenum", "version_check", @@ -535,9 +586,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.3" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ "cfg-if", "libc", @@ -546,15 +597,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.26.1" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" +checksum = "221996f774192f0f718773def8201c4ae31f02616a54ccfc2d358bb0e5cefdec" [[package]] name = "h2" -version = "0.3.9" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f072413d126e57991455e0a922b31e4c8ba7c2ffbebf6b78b4f8521397d65cd" +checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" dependencies = [ "bytes", "fnv", @@ -569,12 +620,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "hashbrown" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" - [[package]] name = "hashbrown" version = "0.12.3" @@ -590,14 +635,14 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69fe1fcf8b4278d860ad0548329f892a3631fb63f82574df68275f34cdbe0ffa" dependencies = [ - "hashbrown 0.12.3", + "hashbrown", ] [[package]] name = "headers" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c4eb0471fcb85846d8b0690695ef354f9afb11cb03cac2e1d7c9253351afb0" +checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" dependencies = [ "base64", "bitflags", @@ -606,7 +651,7 @@ dependencies = [ "http", "httpdate", "mime", - "sha-1", + "sha1", ] [[package]] @@ -620,27 +665,27 @@ dependencies = [ [[package]] name = "heck" -version = "0.3.3" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" dependencies = [ "unicode-segmentation", ] [[package]] -name = "heck" -version = "0.4.0" +name = "hermit-abi" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ - "unicode-segmentation", + "libc", ] [[package]] name = "hermit-abi" -version = "0.1.19" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" dependencies = [ "libc", ] @@ -666,25 +711,25 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.6", + "digest", ] [[package]] name = "http" -version = "0.2.5" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1323096b05d41827dadeaee54c9981958c0f94e670bc94ed80037d1a7b8b186b" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" dependencies = [ "bytes", "fnv", - "itoa 0.4.8", + "itoa 1.0.5", ] [[package]] name = "http-body" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", "http", @@ -693,9 +738,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.5.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" @@ -711,9 +756,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.16" +version = "0.14.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7ec3e62bdc98a2f0393a5048e4c30ef659440ea6e0e572965103e72bd836f55" +checksum = "5e011372fa0b68db8350aa7a248930ecc7839bf46d8485577d69f117a75f164c" dependencies = [ "bytes", "futures-channel", @@ -724,7 +769,7 @@ dependencies = [ "http-body", "httparse", "httpdate", - "itoa 0.4.8", + "itoa 1.0.5", "pin-project-lite", "socket2", "tokio", @@ -733,13 +778,36 @@ dependencies = [ "want", ] +[[package]] +name = "iana-time-zone" +version = "0.1.53" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +dependencies = [ + "cxx", + "cxx-build", +] + [[package]] name = "idna" -version = "0.2.3" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" dependencies = [ - "matches", "unicode-bidi", "unicode-normalization", ] @@ -752,12 +820,12 @@ checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" [[package]] name = "indexmap" -version = "1.7.0" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" dependencies = [ "autocfg", - "hashbrown 0.11.2", + "hashbrown", ] [[package]] @@ -771,9 +839,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.10.3" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ "either", ] @@ -786,15 +854,15 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.1" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" [[package]] name = "js-sys" -version = "0.3.58" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" dependencies = [ "wasm-bindgen", ] @@ -807,9 +875,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.112" +version = "0.2.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125" +checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" [[package]] name = "libsqlite3-sys" @@ -822,44 +890,48 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "link-cplusplus" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" +dependencies = [ + "cc", +] + [[package]] name = "lock_api" -version = "0.4.5" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712a4d093c9976e24e7dbca41db895dabcbac38eb5f4045393d17a95bdfb1109" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" dependencies = [ + "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.14" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ "cfg-if", ] -[[package]] -name = "matches" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" - [[package]] name = "md-5" version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" dependencies = [ - "digest 0.10.6", + "digest", ] [[package]] name = "memchr" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "mime" @@ -869,9 +941,9 @@ checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" [[package]] name = "mime_guess" -version = "2.0.3" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" dependencies = [ "mime", "unicase", @@ -885,34 +957,23 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.4.4" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" dependencies = [ "adler", - "autocfg", ] [[package]] name = "mio" -version = "0.7.14" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" +checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" dependencies = [ "libc", "log", - "miow", - "ntapi", - "winapi", -] - -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi", + "wasi", + "windows-sys 0.42.0", ] [[package]] @@ -935,9 +996,9 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" dependencies = [ "lazy_static", "libc", @@ -953,23 +1014,14 @@ dependencies = [ [[package]] name = "nom" -version = "7.1.1" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" dependencies = [ "memchr", "minimal-lexical", ] -[[package]] -name = "ntapi" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" -dependencies = [ - "winapi", -] - [[package]] name = "num-integer" version = "0.1.45" @@ -982,58 +1034,64 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.13.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ - "hermit-abi", + "hermit-abi 0.2.6", "libc", ] [[package]] name = "object" -version = "0.27.1" +version = "0.30.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.9.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" - -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" [[package]] name = "openssl" -version = "0.10.38" +version = "0.10.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" +checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1" dependencies = [ "bitflags", "cfg-if", "foreign-types", "libc", "once_cell", + "openssl-macros", "openssl-sys", ] +[[package]] +name = "openssl-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "openssl-probe" version = "0.1.5" @@ -1042,9 +1100,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.72" +version = "0.9.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb" +checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7" dependencies = [ "autocfg", "cc", @@ -1067,14 +1125,24 @@ checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ "instant", "lock_api", - "parking_lot_core", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.7", ] [[package]] name = "parking_lot_core" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" dependencies = [ "cfg-if", "instant", @@ -1084,32 +1152,45 @@ dependencies = [ "winapi", ] +[[package]] +name = "parking_lot_core" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys 0.45.0", +] + [[package]] name = "paste" -version = "1.0.7" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" +checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pin-project" -version = "1.0.8" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "576bc800220cc65dac09e99e97b08b358cfab6e17078de8dc5fee223bd2d0c08" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.8" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" dependencies = [ "proc-macro2", "quote", @@ -1118,9 +1199,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.7" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d31d11c69a6b52a174b42bdc0c30e5e11670f90788b2c471c31c1d17d449443" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" [[package]] name = "pin-utils" @@ -1130,23 +1211,23 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" +checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" [[package]] name = "ppv-lite86" -version = "0.2.15" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.37" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1" +checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -1157,23 +1238,22 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.17" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "632d02bff7f874a36f33ea8bb416cd484b90cc66c1194b1a1110d067a7013f58" +checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha", "rand_core", - "rand_hc", ] [[package]] @@ -1188,22 +1268,13 @@ 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", ] -[[package]] -name = "rand_hc" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7" -dependencies = [ - "rand_core", -] - [[package]] name = "redox_syscall" version = "0.2.16" @@ -1226,9 +1297,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.5.6" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1" +checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" dependencies = [ "aho-corasick", "memchr", @@ -1243,9 +1314,9 @@ checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" [[package]] name = "regex-syntax" -version = "0.6.26" +version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" [[package]] name = "remove_dir_all" @@ -1273,11 +1344,20 @@ version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" +[[package]] +name = "rustls-pemfile" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" +dependencies = [ + "base64", +] + [[package]] name = "ryu" -version = "1.0.9" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" +checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" [[package]] name = "safemem" @@ -1297,19 +1377,18 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.19" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" +checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" dependencies = [ - "lazy_static", - "winapi", + "windows-sys 0.42.0", ] [[package]] name = "scoped-tls" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" [[package]] name = "scopeguard" @@ -1317,11 +1396,17 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "scratch" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddccb15bcce173023b3fedd9436f882a0739b8dfb45e4f6b6002bee5929f61b2" + [[package]] name = "security-framework" -version = "2.6.1" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" dependencies = [ "bitflags", "core-foundation", @@ -1332,9 +1417,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.6.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" dependencies = [ "core-foundation-sys", "libc", @@ -1342,18 +1427,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.132" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9875c23cf305cd1fd7eb77234cbb705f21ea6a72c637a5c6db5fe4b8e7f008" +checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.132" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc0db5cb2556c0e558887d9bbdcf6ac4471e83ff66cf696e5419024d1606276" +checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" dependencies = [ "proc-macro2", "quote", @@ -1362,23 +1447,23 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.73" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcbd0344bc6533bc7ec56df11d42fb70f1b912351c0825ccb7211b59d8af7cf5" +checksum = "7434af0dc1cbd59268aa98b4c22c131c0584d2232f6fb166efb993e2832e896a" dependencies = [ - "itoa 1.0.1", + "itoa 1.0.5", "ryu", "serde", ] [[package]] name = "serde_urlencoded" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" dependencies = [ "form_urlencoded", - "itoa 0.4.8", + "itoa 1.0.5", "ryu", "serde", ] @@ -1409,15 +1494,13 @@ dependencies = [ [[package]] name = "sha-1" -version = "0.9.8" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" dependencies = [ - "block-buffer 0.9.0", "cfg-if", "cpufeatures", - "digest 0.9.0", - "opaque-debug", + "digest", ] [[package]] @@ -1428,7 +1511,7 @@ checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest", ] [[package]] @@ -1439,7 +1522,7 @@ checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest", ] [[package]] @@ -1462,21 +1545,24 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.5" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] [[package]] name = "smallvec" -version = "1.7.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "socket2" -version = "0.4.2" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dc90fe6c7be1a323296982db1836d1ea9e47b6839496dde9a541bc496df3516" +checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" dependencies = [ "libc", "winapi", @@ -1484,9 +1570,9 @@ dependencies = [ [[package]] name = "spin" -version = "0.9.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "511254be0c5bcf062b019a6c89c01a664aa359ded62f78aa72c6fc137c0590e5" +checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09" dependencies = [ "lock_api", ] @@ -1542,7 +1628,7 @@ dependencies = [ "hkdf", "hmac", "indexmap", - "itoa 1.0.1", + "itoa 1.0.5", "libc", "libsqlite3-sys", "log", @@ -1574,7 +1660,7 @@ checksum = "b850fa514dc11f2ee85be9d055c512aa866746adfacd1cb42d867d68e6a5b0d9" dependencies = [ "dotenvy", "either", - "heck 0.4.0", + "heck", "hex", "once_cell", "proc-macro2", @@ -1618,24 +1704,24 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.91" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d" +checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] name = "tempfile" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" dependencies = [ "cfg-if", + "fastrand", "libc", - "rand", "redox_syscall", "remove_dir_all", "winapi", @@ -1643,27 +1729,27 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.1.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" dependencies = [ "winapi-util", ] [[package]] name = "thiserror" -version = "1.0.30" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.30" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" dependencies = [ "proc-macro2", "quote", @@ -1681,43 +1767,44 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.15.0" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbbf1c778ec206785635ce8ad57fe52b3009ae9e0c9f574a728f3049d3e55838" +checksum = "c8e00990ebabbe4c14c08aca901caed183ecd5c09562a12c824bb53d3c3fd3af" dependencies = [ + "autocfg", "bytes", "libc", "memchr", "mio", "num_cpus", - "once_cell", - "parking_lot", + "parking_lot 0.12.1", "pin-project-lite", "signal-hook-registry", + "socket2", "tokio-macros", - "winapi", + "windows-sys 0.42.0", ] [[package]] name = "tokio-macros" -version = "1.7.0" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" +checksum = "d266c00fde287f55d3f1c3e96c500c362a2b8c695076ec180f27918820bc6df8" dependencies = [ "proc-macro2", "quote", @@ -1736,9 +1823,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.8" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" +checksum = "d660770404473ccd7bc9f8b28494a811bc18542b915c0855c51e8f419d5223ce" dependencies = [ "futures-core", "pin-project-lite", @@ -1747,51 +1834,50 @@ dependencies = [ [[package]] name = "tokio-tungstenite" -version = "0.15.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "511de3f85caf1c98983545490c3d09685fa8eb634e57eec22bb4db271f46cbd8" +checksum = "f714dd15bead90401d77e04243611caec13726c2408afd5b31901dfcdcb3b181" dependencies = [ "futures-util", "log", - "pin-project", "tokio", "tungstenite", ] [[package]] name = "tokio-util" -version = "0.6.9" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" +checksum = "0bb2e075f03b3d66d8d8785356224ba688d2906a371015e225beeb65ca92c740" dependencies = [ "bytes", "futures-core", "futures-sink", - "log", "pin-project-lite", "tokio", + "tracing", ] [[package]] name = "toml" -version = "0.5.8" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ "serde", ] [[package]] name = "tower-service" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.29" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if", "log", @@ -1802,9 +1888,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.18" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8e" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ "proc-macro2", "quote", @@ -1813,11 +1899,12 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.21" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4" +checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" dependencies = [ - "lazy_static", + "once_cell", + "valuable", ] [[package]] @@ -1843,15 +1930,15 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "tungstenite" -version = "0.14.0" +version = "0.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0b2d8558abd2e276b0a8df5c05a2ec762609344191e5fd23e292c910e9165b5" +checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0" dependencies = [ "base64", "byteorder", @@ -1877,9 +1964,9 @@ dependencies = [ [[package]] name = "typenum" -version = "1.14.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b63708a265f51345575b27fe43f9500ad611579e764c79edbc2037b1121959ec" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" [[package]] name = "unicase" @@ -1892,30 +1979,36 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.7" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58" + +[[package]] +name = "unicode-ident" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.8.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8895849a949e7845e06bd6dc1aa51731a103c42707010a5b591c0038fb73385b" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] -name = "unicode-xid" -version = "0.2.2" +name = "unicode-width" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "unicode_categories" @@ -1925,13 +2018,12 @@ checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" [[package]] name = "url" -version = "2.2.2" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" dependencies = [ "form_urlencoded", "idna", - "matches", "percent-encoding", ] @@ -1941,6 +2033,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + [[package]] name = "vcpkg" version = "0.2.15" @@ -1949,9 +2047,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "want" @@ -1965,9 +2063,9 @@ dependencies = [ [[package]] name = "warp" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cef4e1e9114a4b7f1ac799f16ce71c14de5778500c5450ec6b7b920c55b587e" +checksum = "ed7b8be92646fc3d18b06147664ebc5f48d222686cb11a8755e561a735aacc6d" dependencies = [ "bytes", "futures-channel", @@ -1981,6 +2079,7 @@ dependencies = [ "multipart", "percent-encoding", "pin-project", + "rustls-pemfile", "scoped-tls", "serde", "serde_json", @@ -1995,15 +2094,15 @@ dependencies = [ [[package]] name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" +version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.81" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -2011,13 +2110,13 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.81" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" dependencies = [ "bumpalo", - "lazy_static", "log", + "once_cell", "proc-macro2", "quote", "syn", @@ -2026,9 +2125,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.81" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2036,9 +2135,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.81" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" dependencies = [ "proc-macro2", "quote", @@ -2049,15 +2148,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.81" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" [[package]] name = "web-sys" -version = "0.3.58" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" dependencies = [ "js-sys", "wasm-bindgen", @@ -2103,3 +2202,84 @@ name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" diff --git a/sfy-data/Cargo.toml b/sfy-data/Cargo.toml index d1fd5eb7..ab9b5355 100644 --- a/sfy-data/Cargo.toml +++ b/sfy-data/Cargo.toml @@ -25,3 +25,8 @@ sqlx = { version = "0.6", features = [ "runtime-tokio-native-tls", "sqlite", "po percent-encoding = "2.1.0" base64 = "0.13.0" +[features] +sqlite = [] +postgres = [] +default = ["sqlite"] + diff --git a/sfy-data/sfy-data.toml b/sfy-data/sfy-data.toml index 313571df..2792f16e 100644 --- a/sfy-data/sfy-data.toml +++ b/sfy-data/sfy-data.toml @@ -1,5 +1,6 @@ address = "0.0.0.0:3000" -database = "sqlite://sfy-data.db" +# database = "sqlite://sfy-data.db" +database = "postgres://postgres:sfytest@localhost/postgres" tokens = [ "thicaige6oagh3izohvie5Piech9cu5eiweuk5eumoh4aeshooXaghefeme2aizohnohtoowaequ1Ieghuoc8aboj8owuiPai8johthaif8chie1tahgh9in" ] diff --git a/sfy-data/sqlx-data.json b/sfy-data/sqlx-data.json index 2c6a0287..d7f3d15e 100644 --- a/sfy-data/sqlx-data.json +++ b/sfy-data/sqlx-data.json @@ -1,16 +1,6 @@ { "db": "SQLite", - "09d56aab3e5e4e95222fdcd2d9581657cb147f14ccaf602de325f4e80039f6b8": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Right": 2 - } - }, - "query": "INSERT OR REPLACE INTO buoys (dev, name, buoy_type) VALUES ( ?1, ?2, 'sfy' )" - }, - "0cff5ef55d049de1fa0b206f36b149f8b4afb8dde8a1f8d9a5550e62ec33d832": { + "359882be70941a50bd0d5a8261e29e19240f7fddc01a175ad686935064670c72": { "describe": { "columns": [], "nullable": [], @@ -18,9 +8,9 @@ "Right": 5 } }, - "query": "INSERT INTO events (dev, received, event, message_type, data) VALUES ( ?1, ?2, ?3, ?4, ?5 )" + "query": "INSERT INTO events (dev, received, event, message_type, data) VALUES ( $1, $2, $3, $4, $5 )" }, - "29827c4bb027d29f7fd1697f498c2c6a2be91a159467c79e7ac777318f39f9f3": { + "39802a0b786ef9c6805114721f945e8ffeb803f01b59c21819de20d4c2b312d2": { "describe": { "columns": [ { @@ -48,39 +38,19 @@ "Right": 1 } }, - "query": "SELECT received, event, message_type FROM omb_events where dev = ?1 ORDER BY received" + "query": "SELECT received, event, message_type FROM omb_events where dev = $1 ORDER BY received" }, - "512252eeb9063833d58b0106cf65920fa2074a8ce4ff71fce361cb2c3e5291a9": { + "3aaf2ff16d0f2f7d166876087f9549c0559a61e3a877a0dd9b75246884f4ab15": { "describe": { - "columns": [ - { - "name": "event", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "received", - "ordinal": 1, - "type_info": "Int64" - }, - { - "name": "message_type", - "ordinal": 2, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false - ], + "columns": [], + "nullable": [], "parameters": { - "Right": 3 + "Right": 2 } }, - "query": "SELECT event, received, message_type FROM events WHERE dev = ?1 AND received >= ?2 AND received <= ?3 ORDER BY received" + "query": "INSERT INTO buoys (dev, name, buoy_type) VALUES ( $1, $2, 'sfy' )" }, - "5681f98a3810297bd33c0aa8067ffcb98fb9b71679c7ad2f1da489a1b846a073": { + "4ddd4192872c4e3ee4590aac364999318875076fd44565de897985fa772709ec": { "describe": { "columns": [ { @@ -93,88 +63,88 @@ true ], "parameters": { - "Right": 4 + "Right": 1 } }, - "query": "SELECT data FROM omb_events WHERE dev = ?1 AND received = ?2 AND event = ?3 AND message_type = ?4" + "query": "SELECT data FROM events WHERE dev = $1 AND (message_type = 'axl.qo' or message_type = '_track.qo') ORDER BY received DESC LIMIT 1" }, - "630299a0d4be768c469d4fa54940c348656a04b7f90f23abc503e7bb3e6377f0": { + "56a02a9531fb72e86792cd1f9619eab1350a56ae999fc13b773e40c6e7100353": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Right": 1 + } + }, + "query": "INSERT INTO buoys (dev, buoy_type) VALUES ( $1, 'omb' )" + }, + "74f91a9754d2d31e664d402cf59d805f4c06324a2248f4fa1d8c97b8fa20d728": { "describe": { "columns": [ { - "name": "received", + "name": "event", "ordinal": 0, "type_info": "Int64" }, { - "name": "event", + "name": "message_type", "ordinal": 1, "type_info": "Text" }, { - "name": "message_type", + "name": "received", "ordinal": 2, - "type_info": "Text" + "type_info": "Int64" + }, + { + "name": "data", + "ordinal": 3, + "type_info": "Blob" } ], "nullable": [ false, false, - false + false, + true ], "parameters": { - "Right": 1 - } - }, - "query": "SELECT received, event, message_type FROM events where dev = ?1 ORDER BY received" - }, - "75bcaae3f860aeb6ae1c2403fa4117ddd7dfc18b8bbc3443d5a3c984c6969361": { - "describe": { - "columns": [], - "nullable": [], - "parameters": { - "Right": 1 + "Right": 3 } }, - "query": "INSERT OR REPLACE INTO buoys (dev, buoy_type) VALUES ( ?1, 'omb' )" + "query": "SELECT event, message_type, received, data FROM omb_events WHERE dev = $1 AND received >= $2 AND received <= $3 ORDER BY received" }, - "798a551876e4ecef0d8ba6a3a2a52e8309a37b5271c3f4e0445a45cc9575918c": { + "95c29e69ed26e624fe32f63c08622636770490f5fd8ff9164f90e4c7c22aef09": { "describe": { "columns": [ { - "name": "event", + "name": "received", "ordinal": 0, "type_info": "Int64" }, { - "name": "message_type", + "name": "event", "ordinal": 1, "type_info": "Text" }, { - "name": "received", + "name": "message_type", "ordinal": 2, - "type_info": "Int64" - }, - { - "name": "data", - "ordinal": 3, - "type_info": "Blob" + "type_info": "Text" } ], "nullable": [ false, false, - false, - true + false ], "parameters": { - "Right": 3 + "Right": 1 } }, - "query": "SELECT event, message_type, received, data FROM omb_events WHERE dev = ?1 AND received >= ?2 AND received <= ?3 ORDER BY received" + "query": "SELECT received, event, message_type FROM events where dev = $1 ORDER BY received" }, - "9264349646da070d063ffd2dc8021871a92dd0e0350bbcb98f41f45b7e1f1350": { + "a11ac152b4f74ccc7f8b8b4562d1daea623347b9e947e850cb87dcbe60ab7c41": { "describe": { "columns": [ { @@ -202,57 +172,79 @@ "Right": 3 } }, - "query": "SELECT event, received, data FROM events WHERE dev = ?1 AND received >= ?2 AND received <= ?3 ORDER BY received" + "query": "SELECT event, received, data FROM events WHERE dev = $1 AND received >= $2 AND received <= $3 ORDER BY received" + }, + "b3b14eea64aacf59fe45fe2f50d7313af69401648c268e1508a21db4e950a460": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Right": 5 + } + }, + "query": "INSERT INTO omb_events (dev, received, account, message_type, data) VALUES ( $1, $2, $3, $4, $5 )" }, - "a5795363da9c8a2d95aaf58735c7ff40b321cc47c50655136b48020c349b3019": { + "c25e9fa2de9771aeb4acb1cf034b6ef25b439c0807268fa0249dce8e4c8c93a8": { "describe": { "columns": [ { - "name": "data", + "name": "dev", "ordinal": 0, - "type_info": "Blob" + "type_info": "Text" + }, + { + "name": "name", + "ordinal": 1, + "type_info": "Text" + }, + { + "name": "buoy_type", + "ordinal": 2, + "type_info": "Text" } ], "nullable": [ - true + false, + true, + false ], "parameters": { "Right": 1 } }, - "query": "SELECT data FROM omb_events WHERE dev = ?1 AND message_type = 'gps' ORDER BY received DESC LIMIT 1" + "query": "SELECT dev, name, buoy_type FROM buoys where dev = $1" }, - "b52ae20f315da372802921a07c87ba2242ed36511daa7d6cfde192a08ae0b674": { + "cf42cd406a9341c6c74119320161040caba48e64fb92148a6f8d359d693477e1": { "describe": { "columns": [ { - "name": "dev", + "name": "event", "ordinal": 0, "type_info": "Text" }, { - "name": "name", + "name": "received", "ordinal": 1, - "type_info": "Text" + "type_info": "Int64" }, { - "name": "buoy_type", + "name": "message_type", "ordinal": 2, "type_info": "Text" } ], "nullable": [ false, - true, + false, false ], "parameters": { - "Right": 1 + "Right": 3 } }, - "query": "SELECT dev, name, buoy_type FROM buoys where dev = ?1" + "query": "SELECT event, received, message_type FROM events WHERE dev = $1 AND received >= $2 AND received <= $3 ORDER BY received" }, - "bca93f305115fc0c9f1fba54b2a187af792f1bb3ec67e93f8f69d29538b70f78": { + "d58382cd82a8f1b20ab6ab0f828fa88e65496190d76126823446c486283a35f0": { "describe": { "columns": [ { @@ -265,40 +257,38 @@ true ], "parameters": { - "Right": 1 + "Right": 3 } }, - "query": "SELECT data FROM events WHERE dev = ?1 AND (message_type = 'axl.qo' or message_type = '_track.qo') ORDER BY received DESC LIMIT 1" + "query": "SELECT data FROM events WHERE dev = $1 AND received = $2 AND event = $3" }, - "d38a5ff42574316a2dee2765d4151866f3deb4e22cee4d630f16864c4aa028fc": { + "d8e45d855c348b842a52a35dc687f0ef2612ce840931408d32880522974e9e87": { "describe": { "columns": [ { - "name": "event", + "name": "data", "ordinal": 0, - "type_info": "Int64" - }, - { - "name": "message_type", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "received", - "ordinal": 2, - "type_info": "Int64" + "type_info": "Blob" } ], "nullable": [ - false, - false, - false + true ], "parameters": { - "Right": 3 + "Right": 4 + } + }, + "query": "SELECT data FROM omb_events WHERE dev = $1 AND received = $2 AND event = $3 AND message_type = $4" + }, + "d99341d262402abfd8e8e8832e635ef453253fa22894924e873cc192a422629a": { + "describe": { + "columns": [], + "nullable": [], + "parameters": { + "Right": 2 } }, - "query": "SELECT event, message_type, received FROM omb_events WHERE dev = ?1 AND received >= ?2 AND received <= ?3 ORDER BY received" + "query": "UPDATE buoys SET name = $1 where dev = $2" }, "dba868da1bf3f30789c992fd990596983001647a1cc01178767b60dbcee05648": { "describe": { @@ -330,32 +320,52 @@ }, "query": "SELECT dev, name, buoy_type FROM buoys ORDER BY dev" }, - "e9f07ce71c50e05dc3c5bec78f8cad93caed05982fa67ceac5e703f9bf4a3738": { + "e91e0be4aeb11e7f95182b840335e31f07995980f70fdc7a1e325b145cf8c1fa": { "describe": { "columns": [ { - "name": "data", + "name": "event", "ordinal": 0, - "type_info": "Blob" + "type_info": "Int64" + }, + { + "name": "message_type", + "ordinal": 1, + "type_info": "Text" + }, + { + "name": "received", + "ordinal": 2, + "type_info": "Int64" } ], "nullable": [ - true + false, + false, + false ], "parameters": { "Right": 3 } }, - "query": "SELECT data FROM events WHERE dev = ?1 AND received = ?2 AND event = ?3" + "query": "SELECT event, message_type, received FROM omb_events WHERE dev = $1 AND received >= $2 AND received <= $3 ORDER BY received" }, - "ec7c0be54871b5c5d3f71c5b97a90ca1646db80f243c44cb0e03856e53be5eab": { + "f960fff5030e7b0454b1f15657c82badb6b3b06853101557cad9555ac67ff991": { "describe": { - "columns": [], - "nullable": [], + "columns": [ + { + "name": "data", + "ordinal": 0, + "type_info": "Blob" + } + ], + "nullable": [ + true + ], "parameters": { - "Right": 5 + "Right": 1 } }, - "query": "INSERT INTO omb_events (dev, received, account, message_type, data) VALUES ( ?1, ?2, ?3, ?4, ?5 )" + "query": "SELECT data FROM omb_events WHERE dev = $1 AND message_type = 'gps' ORDER BY received DESC LIMIT 1" } } \ No newline at end of file diff --git a/sfy-data/src/database.rs b/sfy-data/src/database.rs index 22f68d44..48c63c8b 100644 --- a/sfy-data/src/database.rs +++ b/sfy-data/src/database.rs @@ -1,12 +1,19 @@ use eyre::Result; use serde::{Deserialize, Serialize}; -use sqlx::AnyPool; -use std::path::{Path, PathBuf}; -use std::str::FromStr; +use std::path::Path; + +#[cfg(feature = "sqlite")] +use sqlx::sqlite::{ + SqliteConnectOptions, SqliteJournalMode, SqlitePool as Pool, SqlitePoolOptions, + SqliteSynchronous, +}; + +#[cfg(feature = "postgres")] +use sqlx::PgPool as Pool; #[derive(Debug)] pub struct Database { - db: AnyPool, + db: Pool, } #[derive(Debug, PartialEq, Clone, Copy)] @@ -82,10 +89,33 @@ impl Database { pub async fn open(path: &str) -> Result { info!("opening database at: {:?}", path); - let db = AnyPool::connect(path).await?; + #[cfg(feature = "postgres")] + let db = { + let db = Pool::connect(path).await?; + db + }; + + #[cfg(feature = "sqlite")] + let db = { + use std::str::FromStr; + let db = SqliteConnectOptions::from_str(path)? + .create_if_missing(true) + .journal_mode(SqliteJournalMode::Wal) + .synchronous(SqliteSynchronous::Normal) + .shared_cache(true) + .page_size(10 * 1024) + .pragma("cache_size", "-20000") // multiple of page_size + .pragma("mmap_size", "3000000000") + .pragma("temp_store", "memory"); + SqlitePoolOptions::new().connect_with(db).await? + }; info!("running db migrations.."); - sqlx::migrate!("./migrations").run(&db).await?; + #[cfg(feature = "sqlite")] + sqlx::migrate!("./migrations/sqlite").run(&db).await?; + + #[cfg(feature = "postgres")] + sqlx::migrate!("./migrations/postgres").run(&db).await?; Ok(Database { db }) } @@ -95,7 +125,7 @@ impl Database { let dev = percent_encoding::percent_decode_str(dev) .decode_utf8_lossy() .to_string(); - let buoy = sqlx::query!("SELECT dev, name, buoy_type FROM buoys where dev = ?1", dev) + let buoy = sqlx::query!("SELECT dev, name, buoy_type FROM buoys where dev = $1", dev) .fetch_optional(&self.db) .await?; @@ -132,7 +162,8 @@ impl Database { r.name.clone().unwrap_or(String::new()), r.buoy_type.clone(), ) - }).collect(); + }) + .collect(); let mut last = Vec::new(); @@ -142,16 +173,24 @@ impl Database { last.push(e); } - let buoys = buoys.into_iter().zip(last).map(|(b, l)| (b.0, b.1, b.2, l)).collect(); + let buoys = buoys + .into_iter() + .zip(last) + .map(|(b, l)| (b.0, b.1, b.2, l)) + .collect(); Ok(buoys) } #[cfg(test)] pub async fn temporary() -> Database { - warn!("create temporary database at in memory"); + #[cfg(feature = "sqlite")] + return Database::open("sqlite::memory:").await.unwrap(); - Database::open("sqlite::memory:").await.unwrap() + #[cfg(feature = "postgres")] + return Database::open("postgres://postgres:sfytest@localhost/postgres") + .await + .unwrap(); } } @@ -162,7 +201,7 @@ pub struct Buoy { known: bool, name: Option, buoy_type: BuoyType, - db: AnyPool, + db: Pool, } #[derive(Debug, Serialize, Deserialize, PartialEq)] @@ -190,7 +229,9 @@ impl Buoy { if let Some(ref name) = name { if self.name.as_ref() != Some(&name) { debug!("Updating name for: {} to {}", self.dev, name); - self.known = false; + sqlx::query!("UPDATE buoys SET name = $1 where dev = $2", name, self.dev,) + .execute(&self.db) + .await?; } } @@ -201,7 +242,7 @@ impl Buoy { ); sqlx::query!( - "INSERT OR REPLACE INTO buoys (dev, name, buoy_type) VALUES ( ?1, ?2, 'sfy' )", + "INSERT INTO buoys (dev, name, buoy_type) VALUES ( $1, $2, 'sfy' )", self.dev, name ) @@ -223,7 +264,7 @@ impl Buoy { let r = received as i64; let file = file.unwrap_or_else(|| "unknown".into()); sqlx::query!( - "INSERT INTO events (dev, received, event, message_type, data) VALUES ( ?1, ?2, ?3, ?4, ?5 )", + "INSERT INTO events (dev, received, event, message_type, data) VALUES ( $1, $2, $3, $4, $5 )", self.dev, r, event, @@ -250,7 +291,7 @@ impl Buoy { if !self.known { sqlx::query!( - "INSERT OR REPLACE INTO buoys (dev, buoy_type) VALUES ( ?1, 'omb' )", + "INSERT INTO buoys (dev, buoy_type) VALUES ( $1, 'omb' )", self.dev, ) .execute(&self.db) @@ -271,7 +312,7 @@ impl Buoy { let message_type = message_type.to_str(); let r = received as i64; sqlx::query!( - "INSERT INTO omb_events (dev, received, account, message_type, data) VALUES ( ?1, ?2, ?3, ?4, ?5 )", + "INSERT INTO omb_events (dev, received, account, message_type, data) VALUES ( $1, $2, $3, $4, $5 )", self.dev, r, account, @@ -290,7 +331,7 @@ impl Buoy { let events = match self.buoy_type { BuoyType::SFY => { sqlx::query!( - "SELECT received, event, message_type FROM events where dev = ?1 ORDER BY received", + "SELECT received, event, message_type FROM events where dev = $1 ORDER BY received", self.dev ) .map(|r| (format!("{}-{}", r.received, r.event), r.message_type)) @@ -299,7 +340,7 @@ impl Buoy { } BuoyType::OMB => { sqlx::query!( - "SELECT received, event, message_type FROM omb_events where dev = ?1 ORDER BY received", + "SELECT received, event, message_type FROM omb_events where dev = $1 ORDER BY received", self.dev ) .map(|r| (format!("{}-{}-{}", r.received, r.event, r.message_type), r.message_type)) @@ -317,11 +358,11 @@ impl Buoy { ensure!(self.known, "No such buoy"); let data = match self.buoy_type { - BuoyType::SFY => sqlx::query!("SELECT data FROM events WHERE dev = ?1 AND (message_type = 'axl.qo' or message_type = '_track.qo') ORDER BY received DESC LIMIT 1", self.dev) + BuoyType::SFY => sqlx::query!("SELECT data FROM events WHERE dev = $1 AND (message_type = 'axl.qo' or message_type = '_track.qo') ORDER BY received DESC LIMIT 1", self.dev) .fetch_one(&self.db) .await?.data, - BuoyType::OMB => sqlx::query!("SELECT data FROM omb_events WHERE dev = ?1 AND message_type = 'gps' ORDER BY received DESC LIMIT 1", self.dev) + BuoyType::OMB => sqlx::query!("SELECT data FROM omb_events WHERE dev = $1 AND message_type = 'gps' ORDER BY received DESC LIMIT 1", self.dev) .fetch_one(&self.db) .await?.data, @@ -345,8 +386,10 @@ impl Buoy { .split_once('-') .ok_or(eyre!("incorrect format of event"))?; + let received = received.parse::()?; + sqlx::query!( - "SELECT data FROM events WHERE dev = ?1 AND received = ?2 AND event = ?3", + "SELECT data FROM events WHERE dev = $1 AND received = $2 AND event = $3", self.dev, received, file @@ -360,10 +403,12 @@ impl Buoy { ensure!(parts.len() == 3, "incorrect format of event"); let received = parts[0]; let file = parts[1]; + let file = file.parse::()?; let message_type = parts[2]; + let received = received.parse::()?; sqlx::query!( - "SELECT data FROM omb_events WHERE dev = ?1 AND received = ?2 AND event = ?3 AND message_type = ?4", + "SELECT data FROM omb_events WHERE dev = $1 AND received = $2 AND event = $3 AND message_type = $4", self.dev, received, file, @@ -387,7 +432,7 @@ impl Buoy { let events = match self.buoy_type { BuoyType::SFY => { sqlx::query!( - "SELECT event, received, message_type FROM events WHERE dev = ?1 AND received >= ?2 AND received <= ?3 ORDER BY received", + "SELECT event, received, message_type FROM events WHERE dev = $1 AND received >= $2 AND received <= $3 ORDER BY received", self.dev, start, end, @@ -398,7 +443,7 @@ impl Buoy { }, BuoyType::OMB => { sqlx::query!( - "SELECT event, message_type, received FROM omb_events WHERE dev = ?1 AND received >= ?2 AND received <= ?3 ORDER BY received", + "SELECT event, message_type, received FROM omb_events WHERE dev = $1 AND received >= $2 AND received <= $3 ORDER BY received", self.dev, start, end, @@ -420,7 +465,7 @@ impl Buoy { BuoyType::SFY => { sqlx::query_as!( Event, - "SELECT event, received, data FROM events WHERE dev = ?1 AND received >= ?2 AND received <= ?3 ORDER BY received", + "SELECT event, received, data FROM events WHERE dev = $1 AND received >= $2 AND received <= $3 ORDER BY received", self.dev, start, end, @@ -430,7 +475,7 @@ impl Buoy { }, BuoyType::OMB => { sqlx::query!( - "SELECT event, message_type, received, data FROM omb_events WHERE dev = ?1 AND received >= ?2 AND received <= ?3 ORDER BY received", + "SELECT event, message_type, received, data FROM omb_events WHERE dev = $1 AND received >= $2 AND received <= $3 ORDER BY received", self.dev, start, end, @@ -464,7 +509,7 @@ mod tests { #[tokio::test] async fn add_some_entries() { let db = Database::temporary().await; - let mut b = db.buoy("buoy-01").await.unwrap(); + let mut b = db.buoy("buoy-05").await.unwrap(); b.append(None, "entry-0", 0, None, "data-0").await.unwrap(); b.append(None, "entry-1", 0, None, "data-1").await.unwrap(); @@ -485,35 +530,39 @@ mod tests { async fn list_buoys() { let db = Database::temporary().await; - let mut b = db.buoy("buoy-01").await.unwrap(); + let mut b = db.buoy("buoy-07").await.unwrap(); b.append(None, "entry-0", 0, None, "data-0").await.unwrap(); - let mut b = db.buoy("buoy-02").await.unwrap(); + let mut b = db.buoy("buoy-08").await.unwrap(); b.append(None, "entry-1", 0, None, "data-1").await.unwrap(); let devs = db.buoys().await.unwrap(); let devs: Vec<_> = devs.iter().map(|(dev, _, _, _)| dev).collect(); - assert_eq!(devs, ["buoy-01", "buoy-02"]); + assert!(devs.iter().any(|e| *e == "buoy-07")); + assert!(devs.iter().any(|e| *e == "buoy-08")); } #[tokio::test] async fn list_entries() { let db = Database::temporary().await; - let mut b = db.buoy("buoy-01").await.unwrap(); + let mut b = db.buoy("buoy-04").await.unwrap(); b.append(None, "entry-0", 0, None, "data-0").await.unwrap(); b.append(None, "entry-1", 0, None, "data-1").await.unwrap(); assert_eq!( - db.buoy("buoy-01").await.unwrap().entries().await.unwrap(), - [("0-entry-0".into(), "unknown".into()), ("0-entry-1".into(), "unknown".into())] + db.buoy("buoy-04").await.unwrap().entries().await.unwrap(), + [ + ("0-entry-0".into(), "unknown".into()), + ("0-entry-1".into(), "unknown".into()) + ] ); } #[tokio::test] async fn append_get() { let db = Database::temporary().await; - let mut b = db.buoy("buoy-01").await.unwrap(); + let mut b = db.buoy("buoy-02").await.unwrap(); b.append(None, "entry-0", 0, None, "data-0").await.unwrap(); assert_eq!(b.get("0-entry-0").await.unwrap(), b"data-0"); @@ -522,7 +571,7 @@ mod tests { #[tokio::test] async fn append_get_range() { let db = Database::temporary().await; - let mut b = db.buoy("buoy-01").await.unwrap(); + let mut b = db.buoy("buoy-03").await.unwrap(); b.append(None, "entry-0", 0, None, "data-0").await.unwrap(); b.append(None, "entry-1", 1, None, "data-1").await.unwrap(); b.append(None, "entry-2", 2, None, "data-2").await.unwrap(); @@ -577,7 +626,9 @@ mod tests { async fn append_last() { let db = Database::temporary().await; let mut b = db.buoy("buoy-01").await.unwrap(); - b.append(None, "entry-0-axl.qo", 0, Some("axl.qo".into()), "data-0").await.unwrap(); + b.append(None, "entry-0-axl.qo", 0, Some("axl.qo".into()), "data-0") + .await + .unwrap(); b.append(None, "entry-1-sessi.qo", 0, None, "data-1") .await .unwrap(); From 76b01549cb0e90e326bb2b9c3cc24099ff6abd01 Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Mon, 6 Feb 2023 13:13:49 +0100 Subject: [PATCH 4/6] sqlx-data: postgres --- sfy-data/sqlx-data.json | 121 +++++++++++++++++++++++++++++----------- 1 file changed, 88 insertions(+), 33 deletions(-) diff --git a/sfy-data/sqlx-data.json b/sfy-data/sqlx-data.json index d7f3d15e..05ab3aad 100644 --- a/sfy-data/sqlx-data.json +++ b/sfy-data/sqlx-data.json @@ -1,11 +1,17 @@ { - "db": "SQLite", + "db": "PostgreSQL", "359882be70941a50bd0d5a8261e29e19240f7fddc01a175ad686935064670c72": { "describe": { "columns": [], "nullable": [], "parameters": { - "Right": 5 + "Left": [ + "Text", + "Int8", + "Text", + "Text", + "Bytea" + ] } }, "query": "INSERT INTO events (dev, received, event, message_type, data) VALUES ( $1, $2, $3, $4, $5 )" @@ -16,12 +22,12 @@ { "name": "received", "ordinal": 0, - "type_info": "Int64" + "type_info": "Int8" }, { "name": "event", "ordinal": 1, - "type_info": "Int64" + "type_info": "Int4" }, { "name": "message_type", @@ -35,7 +41,9 @@ false ], "parameters": { - "Right": 1 + "Left": [ + "Text" + ] } }, "query": "SELECT received, event, message_type FROM omb_events where dev = $1 ORDER BY received" @@ -45,7 +53,10 @@ "columns": [], "nullable": [], "parameters": { - "Right": 2 + "Left": [ + "Text", + "Text" + ] } }, "query": "INSERT INTO buoys (dev, name, buoy_type) VALUES ( $1, $2, 'sfy' )" @@ -56,14 +67,16 @@ { "name": "data", "ordinal": 0, - "type_info": "Blob" + "type_info": "Bytea" } ], "nullable": [ true ], "parameters": { - "Right": 1 + "Left": [ + "Text" + ] } }, "query": "SELECT data FROM events WHERE dev = $1 AND (message_type = 'axl.qo' or message_type = '_track.qo') ORDER BY received DESC LIMIT 1" @@ -73,7 +86,9 @@ "columns": [], "nullable": [], "parameters": { - "Right": 1 + "Left": [ + "Text" + ] } }, "query": "INSERT INTO buoys (dev, buoy_type) VALUES ( $1, 'omb' )" @@ -84,7 +99,7 @@ { "name": "event", "ordinal": 0, - "type_info": "Int64" + "type_info": "Int4" }, { "name": "message_type", @@ -94,12 +109,12 @@ { "name": "received", "ordinal": 2, - "type_info": "Int64" + "type_info": "Int8" }, { "name": "data", "ordinal": 3, - "type_info": "Blob" + "type_info": "Bytea" } ], "nullable": [ @@ -109,7 +124,11 @@ true ], "parameters": { - "Right": 3 + "Left": [ + "Text", + "Int8", + "Int8" + ] } }, "query": "SELECT event, message_type, received, data FROM omb_events WHERE dev = $1 AND received >= $2 AND received <= $3 ORDER BY received" @@ -120,7 +139,7 @@ { "name": "received", "ordinal": 0, - "type_info": "Int64" + "type_info": "Int8" }, { "name": "event", @@ -139,7 +158,9 @@ false ], "parameters": { - "Right": 1 + "Left": [ + "Text" + ] } }, "query": "SELECT received, event, message_type FROM events where dev = $1 ORDER BY received" @@ -155,12 +176,12 @@ { "name": "received", "ordinal": 1, - "type_info": "Int64" + "type_info": "Int8" }, { "name": "data", "ordinal": 2, - "type_info": "Blob" + "type_info": "Bytea" } ], "nullable": [ @@ -169,7 +190,11 @@ true ], "parameters": { - "Right": 3 + "Left": [ + "Text", + "Int8", + "Int8" + ] } }, "query": "SELECT event, received, data FROM events WHERE dev = $1 AND received >= $2 AND received <= $3 ORDER BY received" @@ -179,7 +204,13 @@ "columns": [], "nullable": [], "parameters": { - "Right": 5 + "Left": [ + "Text", + "Int8", + "Text", + "Text", + "Bytea" + ] } }, "query": "INSERT INTO omb_events (dev, received, account, message_type, data) VALUES ( $1, $2, $3, $4, $5 )" @@ -209,7 +240,9 @@ false ], "parameters": { - "Right": 1 + "Left": [ + "Text" + ] } }, "query": "SELECT dev, name, buoy_type FROM buoys where dev = $1" @@ -225,7 +258,7 @@ { "name": "received", "ordinal": 1, - "type_info": "Int64" + "type_info": "Int8" }, { "name": "message_type", @@ -239,7 +272,11 @@ false ], "parameters": { - "Right": 3 + "Left": [ + "Text", + "Int8", + "Int8" + ] } }, "query": "SELECT event, received, message_type FROM events WHERE dev = $1 AND received >= $2 AND received <= $3 ORDER BY received" @@ -250,14 +287,18 @@ { "name": "data", "ordinal": 0, - "type_info": "Blob" + "type_info": "Bytea" } ], "nullable": [ true ], "parameters": { - "Right": 3 + "Left": [ + "Text", + "Int8", + "Text" + ] } }, "query": "SELECT data FROM events WHERE dev = $1 AND received = $2 AND event = $3" @@ -268,14 +309,19 @@ { "name": "data", "ordinal": 0, - "type_info": "Blob" + "type_info": "Bytea" } ], "nullable": [ true ], "parameters": { - "Right": 4 + "Left": [ + "Text", + "Int8", + "Int4", + "Text" + ] } }, "query": "SELECT data FROM omb_events WHERE dev = $1 AND received = $2 AND event = $3 AND message_type = $4" @@ -285,7 +331,10 @@ "columns": [], "nullable": [], "parameters": { - "Right": 2 + "Left": [ + "Text", + "Text" + ] } }, "query": "UPDATE buoys SET name = $1 where dev = $2" @@ -315,7 +364,7 @@ false ], "parameters": { - "Right": 0 + "Left": [] } }, "query": "SELECT dev, name, buoy_type FROM buoys ORDER BY dev" @@ -326,7 +375,7 @@ { "name": "event", "ordinal": 0, - "type_info": "Int64" + "type_info": "Int4" }, { "name": "message_type", @@ -336,7 +385,7 @@ { "name": "received", "ordinal": 2, - "type_info": "Int64" + "type_info": "Int8" } ], "nullable": [ @@ -345,7 +394,11 @@ false ], "parameters": { - "Right": 3 + "Left": [ + "Text", + "Int8", + "Int8" + ] } }, "query": "SELECT event, message_type, received FROM omb_events WHERE dev = $1 AND received >= $2 AND received <= $3 ORDER BY received" @@ -356,14 +409,16 @@ { "name": "data", "ordinal": 0, - "type_info": "Blob" + "type_info": "Bytea" } ], "nullable": [ true ], "parameters": { - "Right": 1 + "Left": [ + "Text" + ] } }, "query": "SELECT data FROM omb_events WHERE dev = $1 AND message_type = 'gps' ORDER BY received DESC LIMIT 1" From 6d7ff75e175b3342c1a5ae6ffd226181a148adc1 Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Mon, 27 Jan 2025 09:58:57 +0100 Subject: [PATCH 5/6] sqlx: enable feature depending on db impl --- sfy-data/Cargo.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sfy-data/Cargo.toml b/sfy-data/Cargo.toml index ab9b5355..367e08a0 100644 --- a/sfy-data/Cargo.toml +++ b/sfy-data/Cargo.toml @@ -21,12 +21,12 @@ bytes = "1.1.0" futures-util = "0.3.18" serde_json = "1.0.72" sanitize-filename = "0.3.0" -sqlx = { version = "0.6", features = [ "runtime-tokio-native-tls", "sqlite", "postgres", "any", "macros", "migrate", "offline", "chrono" ] } +sqlx = { version = "0.6", features = [ "runtime-tokio-native-tls", "any", "macros", "migrate", "offline", "chrono" ] } percent-encoding = "2.1.0" base64 = "0.13.0" [features] -sqlite = [] -postgres = [] +sqlite = [ "sqlx/sqlite" ] +postgres = [ "sqlx/postgres" ] default = ["sqlite"] From 924863864e57b41380cb8d6df6f9ed46f5a4b180 Mon Sep 17 00:00:00 2001 From: Gaute Hope Date: Mon, 27 Jan 2025 10:55:36 +0100 Subject: [PATCH 6/6] test against localhost --- sfy-data/tests/test_add_event.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sfy-data/tests/test_add_event.sh b/sfy-data/tests/test_add_event.sh index ecc0a82b..8afdb08e 100755 --- a/sfy-data/tests/test_add_event.sh +++ b/sfy-data/tests/test_add_event.sh @@ -1,4 +1,5 @@ -HOST=${SFY_SERVER} +HOST=http://localhost:3000 +SFY_AUTH_TOKEN=thicaige6oagh3izohvie5Piech9cu5eiweuk5eumoh4aeshooXaghefeme2aizohnohtoowaequ1Ieghuoc8aboj8owuiPai8johthaif8chie1tahgh9in set -ep