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 = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-executor",
|
||||
"futures-io",
|
||||
"futures-sink",
|
||||
"futures-task",
|
||||
@ -973,6 +974,17 @@ version = "0.3.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
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]]
|
||||
name = "futures-sink"
|
||||
version = "0.3.31"
|
||||
@ -994,6 +1006,7 @@ dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
"futures-macro",
|
||||
"futures-sink",
|
||||
"futures-task",
|
||||
"memchr",
|
||||
@ -2668,6 +2681,7 @@ dependencies = [
|
||||
"chrono",
|
||||
"clap",
|
||||
"feed-rs",
|
||||
"futures",
|
||||
"getrandom 0.2.15",
|
||||
"reqwest",
|
||||
"rocket",
|
||||
|
@ -24,3 +24,4 @@ base64 = "0.21"
|
||||
getrandom = "0.2"
|
||||
tracing = "0.1"
|
||||
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::poll_utils::fetch_new_entries;
|
||||
use crate::user::User;
|
||||
use futures::future::join_all;
|
||||
use tracing::{info, warn};
|
||||
|
||||
struct DemoFeed {
|
||||
@ -83,17 +84,33 @@ pub async fn setup_demo_data(pool: &sqlx::SqlitePool) {
|
||||
.expect("Failed to create demo feed");
|
||||
}
|
||||
|
||||
for feed in feeds.iter() {
|
||||
let url = &feed.url;
|
||||
// Fetch all feeds in parallel
|
||||
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 {
|
||||
Ok(entries) => entries,
|
||||
let results = join_all(fetch_futures).await;
|
||||
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) => {
|
||||
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");
|
||||
|
Loading…
Reference in New Issue
Block a user