From aec5f6b058d490c4c2762a5c22502636957b1207 Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Fri, 12 Jun 2026 01:20:45 +0200 Subject: [PATCH] feat(dependencies): add async-stream and bytes to Cargo.toml and Cargo.lock refactor(adapters): update diary.rs to use BoxStream from futures --- Cargo.lock | 32 +++++++++++++++++++++++++ Cargo.toml | 1 + crates/adapters/export/src/tests/lib.rs | 23 +++++++++++------- crates/adapters/postgres/Cargo.toml | 3 +++ crates/adapters/postgres/src/diary.rs | 2 +- crates/adapters/sqlite/Cargo.toml | 3 +++ crates/adapters/sqlite/src/diary.rs | 2 +- 7 files changed, 56 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 307a877..c5e6068 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -314,6 +314,7 @@ name = "application" version = "0.1.0" dependencies = [ "async-trait", + "bytes", "chrono", "domain", "futures", @@ -567,6 +568,28 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + [[package]] name = "async-task" version = "4.7.1" @@ -1822,9 +1845,12 @@ dependencies = [ name = "export" version = "0.1.0" dependencies = [ + "async-stream", "async-trait", + "bytes", "chrono", "domain", + "futures", "serde_json", "tokio", "uuid", @@ -3848,9 +3874,12 @@ name = "postgres" version = "0.1.0" dependencies = [ "anyhow", + "async-stream", "async-trait", + "bytes", "chrono", "domain", + "futures", "serde", "serde_json", "sqlx", @@ -5124,9 +5153,12 @@ name = "sqlite" version = "0.1.0" dependencies = [ "anyhow", + "async-stream", "async-trait", + "bytes", "chrono", "domain", + "futures", "serde", "serde_json", "sqlx", diff --git a/Cargo.toml b/Cargo.toml index 61465a6..7f1721d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,6 +38,7 @@ resolver = "2" tokio = { version = "1.0", features = ["macros", "net", "rt", "rt-multi-thread", "sync", "time"] } bytes = "1" futures = "0.3" +async-stream = "0.3" dotenvy = "0.15" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" diff --git a/crates/adapters/export/src/tests/lib.rs b/crates/adapters/export/src/tests/lib.rs index 3b936eb..03179f1 100644 --- a/crates/adapters/export/src/tests/lib.rs +++ b/crates/adapters/export/src/tests/lib.rs @@ -19,8 +19,10 @@ async fn collect_stream( fn entry_stream( entries: Vec, -) -> futures::stream::BoxStream<'static, Result> -{ +) -> futures::stream::BoxStream< + 'static, + Result, +> { Box::pin(futures::stream::iter(entries.into_iter().map(Ok))) } @@ -122,12 +124,17 @@ async fn external_metadata_id_included_when_present() { let arr: Vec = serde_json::from_slice(&bytes).unwrap(); assert_eq!(arr[0]["external_metadata_id"], "tt0078748"); - let bytes = collect_stream( - adapter.stream_entries( - entry_stream(vec![make_entry_full("Alien", 1979, None, 5, None, Some("tt0078748"))]), - ExportFormat::Csv, - ), - ) + let bytes = collect_stream(adapter.stream_entries( + entry_stream(vec![make_entry_full( + "Alien", + 1979, + None, + 5, + None, + Some("tt0078748"), + )]), + ExportFormat::Csv, + )) .await; let text = String::from_utf8(bytes).unwrap(); assert!(text.contains("tt0078748")); diff --git a/crates/adapters/postgres/Cargo.toml b/crates/adapters/postgres/Cargo.toml index 2928818..7bc9fc3 100644 --- a/crates/adapters/postgres/Cargo.toml +++ b/crates/adapters/postgres/Cargo.toml @@ -20,3 +20,6 @@ async-trait = { workspace = true } tokio = { workspace = true } serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } +futures = { workspace = true } +bytes = { workspace = true } +async-stream = { workspace = true } diff --git a/crates/adapters/postgres/src/diary.rs b/crates/adapters/postgres/src/diary.rs index 44e65b2..04330b3 100644 --- a/crates/adapters/postgres/src/diary.rs +++ b/crates/adapters/postgres/src/diary.rs @@ -1,5 +1,4 @@ use async_trait::async_trait; -use futures::stream::BoxStream; use domain::{ errors::DomainError, models::{ @@ -9,6 +8,7 @@ use domain::{ ports::DiaryRepository, value_objects::{MovieId, UserId}, }; +use futures::stream::BoxStream; use sqlx::PgPool; use crate::models::{DiaryRow, FeedRow, MovieRow, MovieStatsRow, ReviewRow}; diff --git a/crates/adapters/sqlite/Cargo.toml b/crates/adapters/sqlite/Cargo.toml index 6ea6e2c..707cdd9 100644 --- a/crates/adapters/sqlite/Cargo.toml +++ b/crates/adapters/sqlite/Cargo.toml @@ -20,3 +20,6 @@ chrono = { workspace = true } tracing = { workspace = true } async-trait = { workspace = true } tokio = { workspace = true } +futures = { workspace = true } +bytes = { workspace = true } +async-stream = { workspace = true } diff --git a/crates/adapters/sqlite/src/diary.rs b/crates/adapters/sqlite/src/diary.rs index 745e2ac..5e513fc 100644 --- a/crates/adapters/sqlite/src/diary.rs +++ b/crates/adapters/sqlite/src/diary.rs @@ -1,5 +1,4 @@ use async_trait::async_trait; -use futures::stream::BoxStream; use domain::{ errors::DomainError, models::{ @@ -9,6 +8,7 @@ use domain::{ ports::DiaryRepository, value_objects::{MovieId, UserId}, }; +use futures::stream::BoxStream; use sqlx::SqlitePool; use crate::models::{DiaryRow, FeedRow, MovieRow, MovieStatsRow, ReviewRow};