mirror of
https://github.com/mikedilger/gossip.git
synced 2024-09-19 11:43:43 +00:00
DbRelay: add 2 fields
This commit is contained in:
parent
6be709a9ed
commit
70b161fd7e
@ -10,6 +10,8 @@ pub struct DbRelay {
|
|||||||
pub success_count: u64,
|
pub success_count: u64,
|
||||||
pub failure_count: u64,
|
pub failure_count: u64,
|
||||||
pub rank: Option<u64>,
|
pub rank: Option<u64>,
|
||||||
|
pub last_success_at: Option<u64>,
|
||||||
|
pub post: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl DbRelay {
|
impl DbRelay {
|
||||||
@ -21,11 +23,15 @@ impl DbRelay {
|
|||||||
success_count: 0,
|
success_count: 0,
|
||||||
failure_count: 0,
|
failure_count: 0,
|
||||||
rank: Some(3),
|
rank: Some(3),
|
||||||
|
last_success_at: None,
|
||||||
|
post: false,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn fetch(criteria: Option<&str>) -> Result<Vec<DbRelay>, Error> {
|
pub async fn fetch(criteria: Option<&str>) -> Result<Vec<DbRelay>, Error> {
|
||||||
let sql = "SELECT url, success_count, failure_count, rank FROM relay".to_owned();
|
let sql =
|
||||||
|
"SELECT url, success_count, failure_count, rank, last_success_at, post FROM relay"
|
||||||
|
.to_owned();
|
||||||
let sql = match criteria {
|
let sql = match criteria {
|
||||||
None => sql,
|
None => sql,
|
||||||
Some(crit) => format!("{} WHERE {}", sql, crit),
|
Some(crit) => format!("{} WHERE {}", sql, crit),
|
||||||
@ -37,11 +43,14 @@ impl DbRelay {
|
|||||||
|
|
||||||
let mut stmt = db.prepare(&sql)?;
|
let mut stmt = db.prepare(&sql)?;
|
||||||
let rows = stmt.query_map([], |row| {
|
let rows = stmt.query_map([], |row| {
|
||||||
|
let postint: u32 = row.get(5)?;
|
||||||
Ok(DbRelay {
|
Ok(DbRelay {
|
||||||
url: row.get(0)?,
|
url: row.get(0)?,
|
||||||
success_count: row.get(1)?,
|
success_count: row.get(1)?,
|
||||||
failure_count: row.get(2)?,
|
failure_count: row.get(2)?,
|
||||||
rank: row.get(3)?,
|
rank: row.get(3)?,
|
||||||
|
last_success_at: row.get(4)?,
|
||||||
|
post: (postint > 0),
|
||||||
})
|
})
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
@ -69,19 +78,22 @@ impl DbRelay {
|
|||||||
pub async fn insert(relay: DbRelay) -> Result<(), Error> {
|
pub async fn insert(relay: DbRelay) -> Result<(), Error> {
|
||||||
let _ = Url::new_validated(&relay.url)?;
|
let _ = Url::new_validated(&relay.url)?;
|
||||||
|
|
||||||
let sql = "INSERT OR IGNORE INTO relay (url, success_count, failure_count, rank) \
|
let sql = "INSERT OR IGNORE INTO relay (url, success_count, failure_count, rank, last_success_at, post) \
|
||||||
VALUES (?1, ?2, ?3, ?4)";
|
VALUES (?1, ?2, ?3, ?4, ?5, ?6)";
|
||||||
|
|
||||||
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();
|
||||||
|
|
||||||
let mut stmt = db.prepare(sql)?;
|
let mut stmt = db.prepare(sql)?;
|
||||||
|
let postint = i32::from(relay.post);
|
||||||
stmt.execute((
|
stmt.execute((
|
||||||
&relay.url,
|
&relay.url,
|
||||||
&relay.success_count,
|
&relay.success_count,
|
||||||
&relay.failure_count,
|
&relay.failure_count,
|
||||||
&relay.rank,
|
&relay.rank,
|
||||||
|
&relay.last_success_at,
|
||||||
|
&postint,
|
||||||
))?;
|
))?;
|
||||||
Ok::<(), Error>(())
|
Ok::<(), Error>(())
|
||||||
})
|
})
|
||||||
@ -91,17 +103,20 @@ impl DbRelay {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn update(relay: DbRelay) -> Result<(), Error> {
|
pub async fn update(relay: DbRelay) -> Result<(), Error> {
|
||||||
let sql = "UPDATE relay SET success_count=?, failure_count=?, rank=? WHERE url=?";
|
let sql = "UPDATE relay SET success_count=?, failure_count=?, rank=?, last_success_at=?, post=? WHERE url=?";
|
||||||
|
|
||||||
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();
|
||||||
|
|
||||||
let mut stmt = db.prepare(sql)?;
|
let mut stmt = db.prepare(sql)?;
|
||||||
|
let postint = i32::from(relay.post);
|
||||||
stmt.execute((
|
stmt.execute((
|
||||||
&relay.success_count,
|
&relay.success_count,
|
||||||
&relay.failure_count,
|
&relay.failure_count,
|
||||||
&relay.rank,
|
&relay.rank,
|
||||||
|
&relay.last_success_at,
|
||||||
|
&postint,
|
||||||
&relay.url,
|
&relay.url,
|
||||||
))?;
|
))?;
|
||||||
Ok::<(), Error>(())
|
Ok::<(), Error>(())
|
||||||
|
Loading…
Reference in New Issue
Block a user