From d60533488c1dbd44a18e603440ce158713385d25 Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Sun, 8 Jan 2023 07:50:02 +1300 Subject: [PATCH] Schema 9: person.followed_last_updated --- src/db/mod.rs | 1 + src/db/person.rs | 1 + src/db/schema9.sql | 1 + src/people.rs | 15 +++++++++++---- 4 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 src/db/schema9.sql diff --git a/src/db/mod.rs b/src/db/mod.rs index 99de0b2e..b7dd326a 100644 --- a/src/db/mod.rs +++ b/src/db/mod.rs @@ -110,6 +110,7 @@ fn upgrade(db: &Connection, mut version: u16) -> Result<(), Error> { apply_sql!(db, version, 6, "schema6.sql"); apply_sql!(db, version, 7, "schema7.sql"); apply_sql!(db, version, 8, "schema8.sql"); + apply_sql!(db, version, 9, "schema9.sql"); tracing::info!("Database is at version {}", version); Ok(()) } diff --git a/src/db/person.rs b/src/db/person.rs index cbbd7180..81a41fc6 100644 --- a/src/db/person.rs +++ b/src/db/person.rs @@ -12,4 +12,5 @@ pub struct DbPerson { pub dns_id_last_checked: Option, pub metadata_at: Option, pub followed: u8, + pub followed_last_updated: i64, } diff --git a/src/db/schema9.sql b/src/db/schema9.sql new file mode 100644 index 00000000..e1000687 --- /dev/null +++ b/src/db/schema9.sql @@ -0,0 +1 @@ +ALTER TABLE person ADD COLUMN followed_last_updated INTEGER NOT NULL DEFAULT 0; diff --git a/src/people.rs b/src/people.rs index 29d78e29..ff136984 100644 --- a/src/people.rs +++ b/src/people.rs @@ -65,6 +65,7 @@ impl People { dns_id_last_checked: None, metadata_at: None, followed: 0, + followed_last_updated: 0, }; // Insert into the map self.people.insert(pubkeyhex.to_owned(), dbperson.clone()); @@ -178,7 +179,7 @@ impl People { let sql = "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(); let output: Result, Error> = task::spawn_blocking(move || { @@ -197,6 +198,7 @@ impl People { dns_id_last_checked: row.get(6)?, metadata_at: row.get(7)?, followed: row.get(8)?, + followed_last_updated: row.get(9)?, }) })?; let mut output: Vec = Vec::new(); @@ -473,7 +475,9 @@ impl People { async fn fetch(criteria: Option<&str>) -> Result, Error> { 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 { None => sql, Some(crit) => format!("{} WHERE {}", sql, crit), @@ -495,6 +499,7 @@ impl People { dns_id_last_checked: row.get(6)?, metadata_at: row.get(7)?, followed: row.get(8)?, + followed_last_updated: row.get(9)?, }) })?; @@ -521,8 +526,9 @@ impl People { async fn insert(person: DbPerson) -> Result<(), Error> { let sql = - "INSERT OR IGNORE INTO person (pubkey, name, about, picture, dns_id, dns_id_valid, dns_id_last_checked, metadata_at, followed) \ - VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)"; + "INSERT OR IGNORE INTO person (pubkey, name, about, picture, dns_id, dns_id_valid, \ + 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 || { let maybe_db = GLOBALS.db.blocking_lock(); @@ -539,6 +545,7 @@ impl People { &person.dns_id_last_checked, &person.metadata_at, &person.followed, + &person.followed_last_updated, ))?; Ok::<(), Error>(()) })