Fetch demo feeds
This commit is contained in:
parent
c8301d14e1
commit
89982755a0
14
Cargo.lock
generated
14
Cargo.lock
generated
@ -923,6 +923,7 @@ checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"futures-channel",
|
"futures-channel",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
|
"futures-executor",
|
||||||
"futures-io",
|
"futures-io",
|
||||||
"futures-sink",
|
"futures-sink",
|
||||||
"futures-task",
|
"futures-task",
|
||||||
@ -973,6 +974,17 @@ version = "0.3.31"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
|
checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "futures-macro"
|
||||||
|
version = "0.3.31"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.96",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "futures-sink"
|
name = "futures-sink"
|
||||||
version = "0.3.31"
|
version = "0.3.31"
|
||||||
@ -994,6 +1006,7 @@ dependencies = [
|
|||||||
"futures-channel",
|
"futures-channel",
|
||||||
"futures-core",
|
"futures-core",
|
||||||
"futures-io",
|
"futures-io",
|
||||||
|
"futures-macro",
|
||||||
"futures-sink",
|
"futures-sink",
|
||||||
"futures-task",
|
"futures-task",
|
||||||
"memchr",
|
"memchr",
|
||||||
@ -2668,6 +2681,7 @@ dependencies = [
|
|||||||
"chrono",
|
"chrono",
|
||||||
"clap",
|
"clap",
|
||||||
"feed-rs",
|
"feed-rs",
|
||||||
|
"futures",
|
||||||
"getrandom 0.2.15",
|
"getrandom 0.2.15",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"rocket",
|
"rocket",
|
||||||
|
@ -24,3 +24,4 @@ base64 = "0.21"
|
|||||||
getrandom = "0.2"
|
getrandom = "0.2"
|
||||||
tracing = "0.1"
|
tracing = "0.1"
|
||||||
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
||||||
|
futures = "0.3.31"
|
||||||
|
31
src/demo.rs
31
src/demo.rs
@ -1,6 +1,7 @@
|
|||||||
use crate::feeds::Feed;
|
use crate::feeds::Feed;
|
||||||
use crate::poll_utils::fetch_new_entries;
|
use crate::poll_utils::fetch_new_entries;
|
||||||
use crate::user::User;
|
use crate::user::User;
|
||||||
|
use futures::future::join_all;
|
||||||
use tracing::{info, warn};
|
use tracing::{info, warn};
|
||||||
|
|
||||||
struct DemoFeed {
|
struct DemoFeed {
|
||||||
@ -83,17 +84,33 @@ pub async fn setup_demo_data(pool: &sqlx::SqlitePool) {
|
|||||||
.expect("Failed to create demo feed");
|
.expect("Failed to create demo feed");
|
||||||
}
|
}
|
||||||
|
|
||||||
for feed in feeds.iter() {
|
// Fetch all feeds in parallel
|
||||||
let url = &feed.url;
|
let fetch_futures: Vec<_> = feeds
|
||||||
|
.iter()
|
||||||
|
.map(|feed| {
|
||||||
|
let url = feed.url.clone();
|
||||||
|
async move {
|
||||||
|
let result = fetch_new_entries(&url).await;
|
||||||
|
(url, result)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
let entries = match fetch_new_entries(url).await {
|
let results = join_all(fetch_futures).await;
|
||||||
Ok(entries) => entries,
|
for (url, result) in results {
|
||||||
|
match result {
|
||||||
|
Ok(entries) => {
|
||||||
|
info!(
|
||||||
|
feed_url = url.as_str(),
|
||||||
|
"Successfully fetched {} entries",
|
||||||
|
entries.len()
|
||||||
|
);
|
||||||
|
// TODO: Store entries in database
|
||||||
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
warn!(error=%e, feed_url=url.as_str(), "Error populating feed");
|
warn!(error=%e, feed_url=url.as_str(), "Error populating feed");
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
//update_entry_db(&entries, &feed_id, &mut db).await?;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
info!("Successfully set up demo data");
|
info!("Successfully set up demo data");
|
||||||
|
Loading…
Reference in New Issue
Block a user