A Wrapped / Replay like for teal.fm and rocksky.app (currently on hiatus)
3
fork

Configure Feed

Select the types of activity you want to include in your feed.

clippy

Mia c4566e1e 64fd1b01

+16 -14
+16 -14
src/mbz/replica.rs
··· 1 1 use async_compression::tokio::bufread::BzDecoder; 2 - use duckdb::{DuckdbConnectionManager, params, OptionalExt}; 2 + use duckdb::{DuckdbConnectionManager, OptionalExt, params}; 3 3 use futures::{StreamExt, TryStreamExt}; 4 4 use r2d2::ManageConnection; 5 5 use reqwest::Client; ··· 38 38 39 39 fn check_mbz_schema(db: &DuckdbConnectionManager) -> eyre::Result<bool> { 40 40 let conn = db.connect()?; 41 - let maybe_schema = conn.query_row( 42 - "SELECT schema_name FROM duckdb_schemas() WHERE schema_name='mbz'", 43 - params![], 44 - |row| {row.get::<_, String>(0)}, 45 - ).optional()?; 41 + let maybe_schema = conn 42 + .query_row( 43 + "SELECT schema_name FROM duckdb_schemas() WHERE schema_name='mbz'", 44 + params![], 45 + |row| row.get::<_, String>(0), 46 + ) 47 + .optional()?; 46 48 47 49 Ok(maybe_schema.is_some()) 48 50 } ··· 88 90 } 89 91 } 90 92 91 - replica_import_dump(db, &dir).await?; 93 + replica_import_dump(db, dir).await?; 92 94 93 95 tmp.close()?; 94 96 ··· 96 98 } 97 99 98 100 /// Downloads the full Musicbrainz dump file 99 - async fn replica_get_dump(client: &Client) -> eyre::Result<impl AsyncRead + AsyncBufRead> { 101 + async fn replica_get_dump(client: &Client) -> eyre::Result<impl AsyncBufRead> { 100 102 let latest = client 101 103 .get(format!("{MBZ_FTP_DUMP}/LATEST")) 102 104 .send() ··· 113 115 .error_for_status()?; 114 116 let dump_stream = dump_res.bytes_stream(); 115 117 let dump = dump_stream 116 - .map_err(|e| futures::io::Error::new(futures::io::ErrorKind::Other, e)) 118 + .map_err(futures::io::Error::other) 117 119 .into_async_read() 118 120 .compat(); 119 121 ··· 150 152 if u32::from_str(out.trim())? != CUR_SEQ_SCHEMA { 151 153 eyre::bail!("Current schema is not 30 - check if Flashback needs an update!"); 152 154 } 153 - } else if let Some(path) = path.strip_prefix("mbdump").ok() { 154 - if WANTED_TABLES.contains(&path.to_str().unwrap()) { 155 - debug!("unpacking {} ({} bytes)", path.display(), hdr.size()?); 156 - entry.unpack_in(&tmpdir).await?; 157 - } 155 + } else if let Ok(path) = path.strip_prefix("mbdump") 156 + && WANTED_TABLES.contains(&path.to_str().unwrap()) 157 + { 158 + debug!("unpacking {} ({} bytes)", path.display(), hdr.size()?); 159 + entry.unpack_in(&tmpdir).await?; 158 160 } 159 161 } 160 162