diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/database.rs | 36 | ||||
-rw-r--r-- | src/main.rs | 17 |
2 files changed, 45 insertions, 8 deletions
diff --git a/src/database.rs b/src/database.rs index 085494e..375ca3b 100644 --- a/src/database.rs +++ b/src/database.rs @@ -72,7 +72,11 @@ impl Db { let mut tx = self.connection.begin().await?; // NOTE: Returns `RowNotFound` if not found. - let row = sqlx::query("SELECT id, name FROM repositories where id = ?") + let row = sqlx::query(r#" + SELECT id, name, updated_at + FROM repositories + WHERE id = ? + "#) .bind(id) .fetch_one(&mut tx) .await?; @@ -83,7 +87,7 @@ impl Db { Repo { id: row.get(0), name: Some(row.get(1)), - updated_at: None, + updated_at: Some(row.get(2)), } ) } @@ -108,9 +112,31 @@ impl Db { Ok(()) } - pub fn repo_is_updated() -> Result<bool, Error> { - // select id from repositories where updated_at > datetime("2020-07-13T17:57:56Z"); - Ok(false) + pub async fn repo_is_updated( + &mut self, + repo: &Repo, + ) -> Result<bool, Error> { + let mut tx = self.connection.begin().await?; + + let is_updated = match sqlx::query(r#" + SELECT 1 + FROM repositories + WHERE id = ? + AND datetime(updated_at) < datetime(?) + "#) + .bind(repo.id) + .bind(&repo.updated_at) + .fetch_one(&mut tx) + .await + { + Ok(r) => Ok(true), + Err(sqlx::Error::RowNotFound) => Ok(false), + Err(e) => Err(e.into()), + }; + + tx.commit().await?; + + is_updated } pub fn repo_update(repo: &Repo) -> Result<(), Error> { diff --git a/src/main.rs b/src/main.rs index 1b68b61..e7be108 100644 --- a/src/main.rs +++ b/src/main.rs @@ -56,11 +56,22 @@ async fn main() { // fetch for repo in test_repos { - match db.repo_get(repo.id).await { - Ok(_r) => (), + let id = repo.id; + let db_repo = database::Repo::from(repo); + + match db.repo_get(id).await { + Ok(r) => { + // TODO: fetch + + if db.repo_is_updated(&db_repo).await.unwrap() { + dbg!("UPDATED", &db_repo); + } + }, + Err(database::Error::Db(sqlx::Error::RowNotFound)) => { - db.repo_insert(repo.into()).await.unwrap(); + db.repo_insert(db_repo).await.unwrap(); }, + e => panic!("{:?}", e), } } |