Schema 9: person.followed_last_updated

This commit is contained in:
Mike Dilger 2023-01-08 07:50:02 +13:00
parent 21b725f11d
commit d60533488c
4 changed files with 14 additions and 4 deletions

View File

@ -110,6 +110,7 @@ fn upgrade(db: &Connection, mut version: u16) -> Result<(), Error> {
apply_sql!(db, version, 6, "schema6.sql"); apply_sql!(db, version, 6, "schema6.sql");
apply_sql!(db, version, 7, "schema7.sql"); apply_sql!(db, version, 7, "schema7.sql");
apply_sql!(db, version, 8, "schema8.sql"); apply_sql!(db, version, 8, "schema8.sql");
apply_sql!(db, version, 9, "schema9.sql");
tracing::info!("Database is at version {}", version); tracing::info!("Database is at version {}", version);
Ok(()) Ok(())
} }

View File

@ -12,4 +12,5 @@ pub struct DbPerson {
pub dns_id_last_checked: Option<u64>, pub dns_id_last_checked: Option<u64>,
pub metadata_at: Option<i64>, pub metadata_at: Option<i64>,
pub followed: u8, pub followed: u8,
pub followed_last_updated: i64,
} }

1
src/db/schema9.sql Normal file
View File

@ -0,0 +1 @@
ALTER TABLE person ADD COLUMN followed_last_updated INTEGER NOT NULL DEFAULT 0;

View File

@ -65,6 +65,7 @@ impl People {
dns_id_last_checked: None, dns_id_last_checked: None,
metadata_at: None, metadata_at: None,
followed: 0, followed: 0,
followed_last_updated: 0,
}; };
// Insert into the map // Insert into the map
self.people.insert(pubkeyhex.to_owned(), dbperson.clone()); self.people.insert(pubkeyhex.to_owned(), dbperson.clone());
@ -178,7 +179,7 @@ impl People {
let sql = let sql =
"SELECT pubkey, name, about, picture, dns_id, dns_id_valid, dns_id_last_checked, \ "SELECT pubkey, name, about, picture, dns_id, dns_id_valid, dns_id_last_checked, \
metadata_at, followed FROM person WHERE followed=1" metadata_at, followed, followed_last_updated FROM person WHERE followed=1"
.to_owned(); .to_owned();
let output: Result<Vec<DbPerson>, Error> = task::spawn_blocking(move || { let output: Result<Vec<DbPerson>, Error> = task::spawn_blocking(move || {
@ -197,6 +198,7 @@ impl People {
dns_id_last_checked: row.get(6)?, dns_id_last_checked: row.get(6)?,
metadata_at: row.get(7)?, metadata_at: row.get(7)?,
followed: row.get(8)?, followed: row.get(8)?,
followed_last_updated: row.get(9)?,
}) })
})?; })?;
let mut output: Vec<DbPerson> = Vec::new(); let mut output: Vec<DbPerson> = Vec::new();
@ -473,7 +475,9 @@ impl People {
async fn fetch(criteria: Option<&str>) -> Result<Vec<DbPerson>, Error> { async fn fetch(criteria: Option<&str>) -> Result<Vec<DbPerson>, Error> {
let sql = let sql =
"SELECT pubkey, name, about, picture, dns_id, dns_id_valid, dns_id_last_checked, metadata_at, followed FROM person".to_owned(); "SELECT pubkey, name, about, picture, dns_id, dns_id_valid, dns_id_last_checked, \
metadata_at, followed, followed_last_updated FROM person"
.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),
@ -495,6 +499,7 @@ impl People {
dns_id_last_checked: row.get(6)?, dns_id_last_checked: row.get(6)?,
metadata_at: row.get(7)?, metadata_at: row.get(7)?,
followed: row.get(8)?, followed: row.get(8)?,
followed_last_updated: row.get(9)?,
}) })
})?; })?;
@ -521,8 +526,9 @@ impl People {
async fn insert(person: DbPerson) -> Result<(), Error> { async fn insert(person: DbPerson) -> Result<(), Error> {
let sql = let sql =
"INSERT OR IGNORE INTO person (pubkey, name, about, picture, dns_id, dns_id_valid, dns_id_last_checked, metadata_at, followed) \ "INSERT OR IGNORE INTO person (pubkey, name, about, picture, dns_id, dns_id_valid, \
VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)"; dns_id_last_checked, metadata_at, followed, followed_last_updated) \
VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10)";
task::spawn_blocking(move || { task::spawn_blocking(move || {
let maybe_db = GLOBALS.db.blocking_lock(); let maybe_db = GLOBALS.db.blocking_lock();
@ -539,6 +545,7 @@ impl People {
&person.dns_id_last_checked, &person.dns_id_last_checked,
&person.metadata_at, &person.metadata_at,
&person.followed, &person.followed,
&person.followed_last_updated,
))?; ))?;
Ok::<(), Error>(()) Ok::<(), Error>(())
}) })