From 42d74511dacedbdca7131abdd0b64bd98b2cdaea Mon Sep 17 00:00:00 2001 From: Bulat Kurbanov Date: Sun, 2 Jun 2024 15:10:01 +0200 Subject: [PATCH] Refactor and update deps --- Cargo.lock | 155 +++++++++++++------------------------------- Cargo.toml | 15 ++--- src/main.rs | 1 + src/repository.rs | 25 +++++++ src/services/mod.rs | 30 ++++----- 5 files changed, 92 insertions(+), 134 deletions(-) create mode 100644 src/repository.rs diff --git a/Cargo.lock b/Cargo.lock index 08e6516..4ff13c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -109,15 +109,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-mutex" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479db852db25d9dbf6204e6cb6253698f175c15726470f78af0d918e99d6156e" -dependencies = [ - "event-listener 2.5.3", -] - [[package]] name = "async-stream" version = "0.3.5" @@ -343,9 +334,9 @@ checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bigdecimal" @@ -870,12 +861,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "event-listener" -version = "2.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" - [[package]] name = "event-listener" version = "4.0.3" @@ -1563,6 +1548,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -1734,12 +1728,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "md5" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" - [[package]] name = "memchr" version = "2.7.2" @@ -1935,34 +1923,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "minio-rsc" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "febcba5252c6c5dc08498c12b48af40710bfee5297984be8bf41001f3adad36a" -dependencies = [ - "async-mutex", - "async-stream", - "base64 0.22.0", - "bytes", - "chrono", - "crc32fast", - "futures", - "futures-core", - "futures-util", - "hex", - "hmac", - "hyper 1.3.1", - "md5", - "once_cell", - "regex", - "reqwest 0.12.4", - "serde", - "serde-xml-rs", - "sha2 0.10.8", - "urlencoding", -] - [[package]] name = "miniz_oxide" version = "0.7.2" @@ -3128,7 +3088,7 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "bytes", "encoding_rs", "futures-channel", @@ -3211,7 +3171,7 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "rustls-pki-types", ] @@ -3312,9 +3272,9 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "sentry" -version = "0.32.3" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00421ed8fa0c995f07cde48ba6c89e80f2b312f74ff637326f392fbfd23abe02" +checksum = "3b73ab9d5b35ed718611e89db8c886647821cfce79723b9e2e4e7cb3fd9cdd49" dependencies = [ "httpdate", "native-tls", @@ -3331,9 +3291,9 @@ dependencies = [ [[package]] name = "sentry-backtrace" -version = "0.32.3" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a79194074f34b0cbe5dd33896e5928bbc6ab63a889bd9df2264af5acb186921e" +checksum = "8ce52a2633e0332821389f865762b94852e71b359cd8e95cbf91f38c154302cb" dependencies = [ "backtrace", "once_cell", @@ -3343,9 +3303,9 @@ dependencies = [ [[package]] name = "sentry-contexts" -version = "0.32.3" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eba8870c5dba2bfd9db25c75574a11429f6b95957b0a78ac02e2970dd7a5249a" +checksum = "10565e6eb013737bf7555250f8b4b8248a571e1de4de7230037f5dd5ea51bc63" dependencies = [ "hostname 0.4.0", "libc", @@ -3357,12 +3317,15 @@ dependencies = [ [[package]] name = "sentry-core" -version = "0.32.3" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46a75011ea1c0d5c46e9e57df03ce81f5c7f0a9e199086334a1f9c0a541e0826" +checksum = "a2c5e7a0430cfa86b7cb6e7bc01a56331937b2ba08ab703c2e7331139a99f121" dependencies = [ + "crc32fast", + "itertools 0.13.0", "once_cell", "rand 0.8.5", + "regex", "sentry-types", "serde", "serde_json", @@ -3370,9 +3333,9 @@ dependencies = [ [[package]] name = "sentry-debug-images" -version = "0.32.3" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ec2a486336559414ab66548da610da5e9626863c3c4ffca07d88f7dc71c8de8" +checksum = "2be3e693a65dba8578790de0c6adc0a833815979590ed867336aff8fbcf9cbf7" dependencies = [ "findshlibs", "once_cell", @@ -3381,9 +3344,9 @@ dependencies = [ [[package]] name = "sentry-panic" -version = "0.32.3" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eaa3ecfa3c8750c78dcfd4637cfa2598b95b52897ed184b4dc77fcf7d95060d" +checksum = "6f4040c0ad5670b90fc60759bbb31e3fc0d6517448d0c7440255a6f7362c50e7" dependencies = [ "sentry-backtrace", "sentry-core", @@ -3391,9 +3354,9 @@ dependencies = [ [[package]] name = "sentry-tracing" -version = "0.32.3" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f715932bf369a61b7256687c6f0554141b7ce097287e30e3f7ed6e9de82498fe" +checksum = "151ff7c03687737ba11969ccdc6f45eb7775ed7a95880810297c6cc8c3574e75" dependencies = [ "sentry-backtrace", "sentry-core", @@ -3403,9 +3366,9 @@ dependencies = [ [[package]] name = "sentry-types" -version = "0.32.3" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4519c900ce734f7a0eb7aba0869dfb225a7af8820634a7dd51449e3b093cfb7c" +checksum = "10d5ad9e33b9f6f598387a6a23aa23c7f13e4e7740a34cd4d9c8db851bfdae05" dependencies = [ "debugid", "hex", @@ -3420,9 +3383,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.198" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] @@ -3437,23 +3400,11 @@ dependencies = [ "serde", ] -[[package]] -name = "serde-xml-rs" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3aa78ecda1ebc9ec9847d5d3aba7d618823446a049ba2491940506da6e2782" -dependencies = [ - "log", - "serde", - "thiserror", - "xml-rs", -] - [[package]] name = "serde_derive" -version = "1.0.198" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", @@ -3462,9 +3413,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "indexmap 2.2.6", "itoa", @@ -3856,13 +3807,12 @@ dependencies = [ "async-stream", "axum 0.7.5", "axum-prometheus", - "base64 0.22.0", + "base64 0.22.1", "bytes", "chrono", "dotenv", "futures", "futures-core", - "minio-rsc", "moka", "once_cell", "prisma-client-rust", @@ -4044,9 +3994,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.37.0" +version = "1.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" dependencies = [ "backtrace", "bytes", @@ -4063,9 +4013,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", @@ -4127,9 +4077,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", @@ -4137,7 +4087,6 @@ dependencies = [ "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -4416,7 +4365,7 @@ version = "2.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d11a831e3c0b56e438a28308e7c810799e3c118417f342d30ecec080105395cd" dependencies = [ - "base64 0.22.0", + "base64 0.22.1", "log", "native-tls", "once_cell", @@ -4435,12 +4384,6 @@ dependencies = [ "serde", ] -[[package]] -name = "urlencoding" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" - [[package]] name = "user-facing-error-macros" version = "0.1.0" @@ -4821,12 +4764,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "xml-rs" -version = "0.8.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" - [[package]] name = "zerocopy" version = "0.7.32" diff --git a/Cargo.toml b/Cargo.toml index c1d1f6b..a6f3b77 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,29 +16,28 @@ once_cell = "1.19.0" dotenv = "0.15.0" prisma-client-rust = { git = "https://github.com/Brendonovich/prisma-client-rust", tag = "0.6.10", default-features = false, features = ["postgresql"] } -serde = { version = "1.0.198", features = ["derive"] } -serde_json = "1.0.116" +serde = { version = "1.0.203", features = ["derive"] } +serde_json = "1.0.117" reqwest = { version = "0.12.4", features = ["json", "stream", "multipart"] } -tokio = { version = "1.37.0", features = ["full"] } -tokio-util = { version = "0.7.10", features = ["compat"] } +tokio = { version = "1.38.0", features = ["full"] } +tokio-util = { version = "0.7.11", features = ["compat"] } axum = { version = "0.7.5", features = ["json"] } axum-prometheus = "0.6.1" chrono = "0.4.38" -sentry = { version = "0.32.3", features = ["debug-images"] } +sentry = { version = "0.33.0", features = ["debug-images"] } tracing = "0.1.40" tracing-subscriber = { version = "0.3.18", features = ["env-filter"]} -sentry-tracing = "0.32.3" +sentry-tracing = "0.33.0" tower-http = { version = "0.5.2", features = ["trace"] } -base64 = "0.22.0" +base64 = "0.22.1" futures = "0.3.30" futures-core = "0.3.30" async-stream = "0.3.5" -minio-rsc = "0.2.2" tempfile = "3.10.1" bytes = "1.6.0" diff --git a/src/main.rs b/src/main.rs index 76851f6..1345d11 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,7 @@ pub mod config; pub mod db; pub mod prisma; +pub mod repository; pub mod services; pub mod views; diff --git a/src/repository.rs b/src/repository.rs new file mode 100644 index 0000000..1e701c8 --- /dev/null +++ b/src/repository.rs @@ -0,0 +1,25 @@ +use prisma_client_rust::QueryError; + +use crate::{prisma::cached_file, views::Database}; + +pub struct CachedFileRepository { + db: Database, +} + +impl CachedFileRepository { + pub fn new(db: Database) -> Self { + Self { db } + } + + pub async fn delete_by_object_id_object_type( + &self, + object_id: i32, + object_type: String, + ) -> Result { + self.db + .cached_file() + .delete(cached_file::object_id_object_type(object_id, object_type)) + .exec() + .await + } +} diff --git a/src/services/mod.rs b/src/services/mod.rs index 7c85624..600356b 100644 --- a/src/services/mod.rs +++ b/src/services/mod.rs @@ -14,11 +14,7 @@ use teloxide::{ }; use tracing::log; -use crate::{ - config::{self}, - prisma::cached_file, - views::Database, -}; +use crate::{config, prisma::cached_file, repository::CachedFileRepository, views::Database}; use self::{ book_library::{get_book, get_books, types::BaseBook}, @@ -183,14 +179,14 @@ pub async fn download_from_cache( let response = match response_task.await.unwrap() { Ok(v) => { if v.status() != 200 { - db.cached_file() - .delete(cached_file::object_id_object_type( + let cached_file_repo = CachedFileRepository::new(db.clone()); + + let _ = cached_file_repo + .delete_by_object_id_object_type( cached_data.object_id, cached_data.object_type.clone(), - )) - .exec() - .await - .unwrap(); + ) + .await; return None; } @@ -198,14 +194,14 @@ pub async fn download_from_cache( v } Err(err) => { - db.cached_file() - .delete(cached_file::object_id_object_type( + let cached_file_repo = CachedFileRepository::new(db.clone()); + + let _ = cached_file_repo + .delete_by_object_id_object_type( cached_data.object_id, cached_data.object_type.clone(), - )) - .exec() - .await - .unwrap(); + ) + .await; log::error!("{:?}", err); return None;