mirror of
https://github.com/mikedilger/gossip.git
synced 2024-09-19 19:46:50 +00:00
Change populate_new_relays() to avoid inserting bad URLs into relays table
This commit is contained in:
parent
45c6fe3915
commit
ba9a47846e
@ -183,7 +183,7 @@ impl DbRelay {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn populate_new_relays() -> Result<(), Error> {
|
pub async fn populate_new_relays() -> Result<(), Error> {
|
||||||
// Get from person_relay list
|
// Get relays from person_relay list
|
||||||
let sql =
|
let sql =
|
||||||
"INSERT OR IGNORE INTO relay (url, rank) SELECT DISTINCT relay, 3 FROM person_relay";
|
"INSERT OR IGNORE INTO relay (url, rank) SELECT DISTINCT relay, 3 FROM person_relay";
|
||||||
|
|
||||||
@ -195,14 +195,39 @@ impl DbRelay {
|
|||||||
})
|
})
|
||||||
.await??;
|
.await??;
|
||||||
|
|
||||||
// Get from 'e' and 'p' tags
|
// Select relays from 'e' and 'p' event tags
|
||||||
let sql =
|
let sql = "SELECT DISTINCT field1 FROM event_tag where (label='e' OR label='p')";
|
||||||
"INSERT OR IGNORE INTO RELAY (url, rank) SELECT DISTINCT field1, 3 FROM event_tag where (label='e' OR label='p') and field1 like 'ws%://%'";
|
let maybe_urls: Vec<String> = spawn_blocking(move || {
|
||||||
|
|
||||||
spawn_blocking(move || {
|
|
||||||
let maybe_db = GLOBALS.db.blocking_lock();
|
let maybe_db = GLOBALS.db.blocking_lock();
|
||||||
let db = maybe_db.as_ref().unwrap();
|
let db = maybe_db.as_ref().unwrap();
|
||||||
db.execute(sql, [])?;
|
let mut stmt = db.prepare(sql)?;
|
||||||
|
let mut rows = stmt.query([])?;
|
||||||
|
let mut maybe_urls: Vec<String> = Vec::new();
|
||||||
|
while let Some(row) = rows.next()? {
|
||||||
|
let maybe_string: Option<String> = row.get(0)?;
|
||||||
|
if let Some(string) = maybe_string {
|
||||||
|
maybe_urls.push(string);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ok::<Vec<String>, Error>(maybe_urls)
|
||||||
|
})
|
||||||
|
.await??;
|
||||||
|
|
||||||
|
// Convert into Urls
|
||||||
|
let urls: Vec<Url> = maybe_urls
|
||||||
|
.iter()
|
||||||
|
.map(|s| Url::new(s))
|
||||||
|
.filter(|r| r.is_valid())
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
// FIXME this is a lot of separate sql calls
|
||||||
|
spawn_blocking(move || {
|
||||||
|
let sql = "INSERT OR IGNORE INTO RELAY (url, rank) VALUES (?, 3)";
|
||||||
|
for url in urls {
|
||||||
|
let maybe_db = GLOBALS.db.blocking_lock();
|
||||||
|
let db = maybe_db.as_ref().unwrap();
|
||||||
|
db.execute(sql, [&url.inner()])?;
|
||||||
|
}
|
||||||
Ok::<(), Error>(())
|
Ok::<(), Error>(())
|
||||||
})
|
})
|
||||||
.await??;
|
.await??;
|
||||||
|
Loading…
Reference in New Issue
Block a user