Insert new commits into the queue

This commit is contained in:
Joscha 2023-08-06 18:08:04 +02:00
parent 553a56bb12
commit 4f11b9c912
10 changed files with 128 additions and 14 deletions

41
src/recurring/queue.rs Normal file
View file

@ -0,0 +1,41 @@
use sqlx::{Acquire, SqlitePool};
use time::OffsetDateTime;
use tracing::debug;
use crate::{somehow, util};
pub async fn update(db: &SqlitePool) -> somehow::Result<()> {
debug!("Updating queue");
let mut tx = db.begin().await?;
let conn = tx.acquire().await?;
// Get all newly added tracked commits
let new = sqlx::query!("SELECT hash FROM commits WHERE new AND reachable = 2")
.fetch_all(&mut *conn)
.await?;
let new_len = new.len();
// Insert them into the queue
for row in new {
let id = util::new_run_id();
let date = OffsetDateTime::now_utc();
sqlx::query!(
"INSERT INTO queue (id, hash, date) VALUES (?, ?, ?)",
id,
row.hash,
date
)
.execute(&mut *conn)
.await?;
}
debug!("Added {new_len} commits to the queue");
// Mark all commits as old
sqlx::query!("UPDATE commits SET new = false")
.execute(&mut *conn)
.await?;
tx.commit().await?;
debug!("Updated queue");
Ok(())
}