From e5de9ccb974781d0847293064e63f1fc9ebb74f4 Mon Sep 17 00:00:00 2001 From: Joscha Date: Wed, 9 Aug 2023 16:19:46 +0200 Subject: [PATCH] Identify queue items by commit hash, not id --- ...026e72badc3e18bc53a03e6b78011ee270ee1.json | 12 ---- ...0abb49cd82788b1e88e4e2ef153b0f35a8fb.json} | 28 ++++---- ...a39fa12d022fc171b8e4195cf1899ccb0557b.json | 50 -------------- ...cf25726a7bb969acc8b9411a2591ce7bcc92f.json | 12 ++++ migrations/20230806143356_queue.sql | 3 +- src/server/recurring/queue.rs | 8 +-- src/server/web.rs | 2 - src/server/web/queue.rs | 21 ++++-- src/server/web/queue_id.rs | 65 ------------------- templates/queue_id.html | 25 ------- templates/queue_table.html | 2 +- 11 files changed, 42 insertions(+), 186 deletions(-) delete mode 100644 .sqlx/query-09d6281af1344afb2d6265149d4026e72badc3e18bc53a03e6b78011ee270ee1.json rename .sqlx/{query-d9514b13cf1c28edb9d868a25d23e39d60676116f7ca6488032f8cfbf274f320.json => query-6c9e27efd2c88772bbf1f89bf53d0abb49cd82788b1e88e4e2ef153b0f35a8fb.json} (66%) delete mode 100644 .sqlx/query-ca4e47d1a7fa0bbe474992eafeca39fa12d022fc171b8e4195cf1899ccb0557b.json create mode 100644 .sqlx/query-d620ced558e472a5fe22d5ad365cf25726a7bb969acc8b9411a2591ce7bcc92f.json delete mode 100644 src/server/web/queue_id.rs delete mode 100644 templates/queue_id.html diff --git a/.sqlx/query-09d6281af1344afb2d6265149d4026e72badc3e18bc53a03e6b78011ee270ee1.json b/.sqlx/query-09d6281af1344afb2d6265149d4026e72badc3e18bc53a03e6b78011ee270ee1.json deleted file mode 100644 index ce6565f..0000000 --- a/.sqlx/query-09d6281af1344afb2d6265149d4026e72badc3e18bc53a03e6b78011ee270ee1.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "db_name": "SQLite", - "query": "INSERT INTO queue (id, hash, date) VALUES (?, ?, ?)", - "describe": { - "columns": [], - "parameters": { - "Right": 3 - }, - "nullable": [] - }, - "hash": "09d6281af1344afb2d6265149d4026e72badc3e18bc53a03e6b78011ee270ee1" -} diff --git a/.sqlx/query-d9514b13cf1c28edb9d868a25d23e39d60676116f7ca6488032f8cfbf274f320.json b/.sqlx/query-6c9e27efd2c88772bbf1f89bf53d0abb49cd82788b1e88e4e2ef153b0f35a8fb.json similarity index 66% rename from .sqlx/query-d9514b13cf1c28edb9d868a25d23e39d60676116f7ca6488032f8cfbf274f320.json rename to .sqlx/query-6c9e27efd2c88772bbf1f89bf53d0abb49cd82788b1e88e4e2ef153b0f35a8fb.json index acef35c..306b6d4 100644 --- a/.sqlx/query-d9514b13cf1c28edb9d868a25d23e39d60676116f7ca6488032f8cfbf274f320.json +++ b/.sqlx/query-6c9e27efd2c88772bbf1f89bf53d0abb49cd82788b1e88e4e2ef153b0f35a8fb.json @@ -1,50 +1,44 @@ { "db_name": "SQLite", - "query": "SELECT id, hash, date AS \"date: time::OffsetDateTime\", priority, message, reachable FROM queue JOIN commits USING (hash) WHERE id = ? ", + "query": "SELECT hash, message, reachable, date AS \"date: time::OffsetDateTime\", priority FROM queue JOIN commits USING (hash) ORDER BY priority DESC, unixepoch(date) DESC, hash ASC ", "describe": { "columns": [ { - "name": "id", + "name": "hash", "ordinal": 0, "type_info": "Text" }, { - "name": "hash", + "name": "message", "ordinal": 1, "type_info": "Text" }, { - "name": "date: time::OffsetDateTime", + "name": "reachable", "ordinal": 2, + "type_info": "Int64" + }, + { + "name": "date: time::OffsetDateTime", + "ordinal": 3, "type_info": "Text" }, { "name": "priority", - "ordinal": 3, - "type_info": "Int64" - }, - { - "name": "message", "ordinal": 4, - "type_info": "Text" - }, - { - "name": "reachable", - "ordinal": 5, "type_info": "Int64" } ], "parameters": { - "Right": 1 + "Right": 0 }, "nullable": [ false, false, false, false, - false, false ] }, - "hash": "d9514b13cf1c28edb9d868a25d23e39d60676116f7ca6488032f8cfbf274f320" + "hash": "6c9e27efd2c88772bbf1f89bf53d0abb49cd82788b1e88e4e2ef153b0f35a8fb" } diff --git a/.sqlx/query-ca4e47d1a7fa0bbe474992eafeca39fa12d022fc171b8e4195cf1899ccb0557b.json b/.sqlx/query-ca4e47d1a7fa0bbe474992eafeca39fa12d022fc171b8e4195cf1899ccb0557b.json deleted file mode 100644 index 8ab3490..0000000 --- a/.sqlx/query-ca4e47d1a7fa0bbe474992eafeca39fa12d022fc171b8e4195cf1899ccb0557b.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "db_name": "SQLite", - "query": "SELECT id, hash, message, reachable, date AS \"date: time::OffsetDateTime\", priority FROM queue JOIN commits USING (hash) ORDER BY priority DESC, unixepoch(date) DESC, hash ASC ", - "describe": { - "columns": [ - { - "name": "id", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "hash", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "message", - "ordinal": 2, - "type_info": "Text" - }, - { - "name": "reachable", - "ordinal": 3, - "type_info": "Int64" - }, - { - "name": "date: time::OffsetDateTime", - "ordinal": 4, - "type_info": "Text" - }, - { - "name": "priority", - "ordinal": 5, - "type_info": "Int64" - } - ], - "parameters": { - "Right": 0 - }, - "nullable": [ - false, - false, - false, - false, - false, - false - ] - }, - "hash": "ca4e47d1a7fa0bbe474992eafeca39fa12d022fc171b8e4195cf1899ccb0557b" -} diff --git a/.sqlx/query-d620ced558e472a5fe22d5ad365cf25726a7bb969acc8b9411a2591ce7bcc92f.json b/.sqlx/query-d620ced558e472a5fe22d5ad365cf25726a7bb969acc8b9411a2591ce7bcc92f.json new file mode 100644 index 0000000..ab261aa --- /dev/null +++ b/.sqlx/query-d620ced558e472a5fe22d5ad365cf25726a7bb969acc8b9411a2591ce7bcc92f.json @@ -0,0 +1,12 @@ +{ + "db_name": "SQLite", + "query": "INSERT INTO queue (hash, date) VALUES (?, ?)", + "describe": { + "columns": [], + "parameters": { + "Right": 2 + }, + "nullable": [] + }, + "hash": "d620ced558e472a5fe22d5ad365cf25726a7bb969acc8b9411a2591ce7bcc92f" +} diff --git a/migrations/20230806143356_queue.sql b/migrations/20230806143356_queue.sql index 46dfc16..8b7e816 100644 --- a/migrations/20230806143356_queue.sql +++ b/migrations/20230806143356_queue.sql @@ -1,6 +1,5 @@ CREATE TABLE queue ( - id TEXT NOT NULL PRIMARY KEY, - hash TEXT NOT NULL, + hash TEXT NOT NULL PRIMARY KEY, date TEXT NOT NULL, priority INT NOT NULL DEFAULT 0, FOREIGN KEY (hash) REFERENCES commits (hash) ON DELETE CASCADE diff --git a/src/server/recurring/queue.rs b/src/server/recurring/queue.rs index d526ff0..f08b758 100644 --- a/src/server/recurring/queue.rs +++ b/src/server/recurring/queue.rs @@ -2,7 +2,7 @@ use sqlx::{Acquire, SqlitePool}; use time::OffsetDateTime; use tracing::debug; -use crate::{server::util, somehow}; +use crate::somehow; pub async fn update(db: &SqlitePool) -> somehow::Result<()> { debug!("Updating queue"); @@ -17,13 +17,11 @@ pub async fn update(db: &SqlitePool) -> somehow::Result<()> { // 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, + "INSERT INTO queue (hash, date) VALUES (?, ?)", row.hash, - date + date, ) .execute(&mut *conn) .await?; diff --git a/src/server/web.rs b/src/server/web.rs index 5442be7..4b1736d 100644 --- a/src/server/web.rs +++ b/src/server/web.rs @@ -2,7 +2,6 @@ mod commit; mod commit_hash; mod index; mod queue; -mod queue_id; mod r#static; use axum::{routing::get, Router}; @@ -48,7 +47,6 @@ pub async fn run(server: Server) -> somehow::Result<()> { .route("/commit/:hash", get(commit_hash::get)) .route("/queue/", get(queue::get)) .route("/queue/table", get(queue::get_table)) - .route("/queue/:id", get(queue_id::get)) .fallback(get(r#static::static_handler)) .with_state(server.clone()); diff --git a/src/server/web/queue.rs b/src/server/web/queue.rs index a107ad8..cdbe7fa 100644 --- a/src/server/web/queue.rs +++ b/src/server/web/queue.rs @@ -8,7 +8,7 @@ use crate::{config::Config, server::util, somehow}; use super::{Base, Tab}; struct Task { - id: String, + hash: String, short: String, reachable: i64, since: String, @@ -20,7 +20,6 @@ async fn get_queue(db: &SqlitePool) -> somehow::Result> { let mut tasks = sqlx::query!( "\ SELECT \ - id, \ hash, \ message, \ reachable, \ @@ -33,8 +32,8 @@ async fn get_queue(db: &SqlitePool) -> somehow::Result> { ) .fetch(db) .map_ok(|r| Task { - id: r.id, short: util::format_commit_short(&r.hash, &r.message), + hash: r.hash, reachable: r.reachable, since: util::format_delta_from_now(r.date), priority: r.priority, @@ -59,12 +58,19 @@ async fn get_queue(db: &SqlitePool) -> somehow::Result> { #[derive(Template)] #[template(path = "queue_table.html")] struct QueueTableTemplate { + base: Base, tasks: Vec, } -pub async fn get_table(State(db): State) -> somehow::Result { +pub async fn get_table( + State(config): State<&'static Config>, + State(db): State, +) -> somehow::Result { let tasks = get_queue(&db).await?; - Ok(QueueTableTemplate { tasks }) + Ok(QueueTableTemplate { + base: Base::new(config, Tab::Queue), + tasks, + }) } #[derive(Template)] #[template(path = "queue.html")] @@ -77,9 +83,10 @@ pub async fn get( State(config): State<&'static Config>, State(db): State, ) -> somehow::Result { + let base = Base::new(config, Tab::Queue); let tasks = get_queue(&db).await?; Ok(QueueTemplate { - base: Base::new(config, Tab::Queue), - table: QueueTableTemplate { tasks }, + base: base.clone(), + table: QueueTableTemplate { base, tasks }, }) } diff --git a/src/server/web/queue_id.rs b/src/server/web/queue_id.rs deleted file mode 100644 index acdd086..0000000 --- a/src/server/web/queue_id.rs +++ /dev/null @@ -1,65 +0,0 @@ -use askama::Template; -use axum::{ - extract::{Path, State}, - http::StatusCode, - response::{IntoResponse, Response}, -}; -use sqlx::SqlitePool; - -use crate::{config::Config, server::util, somehow}; - -use super::{Base, Tab}; - -#[derive(Template)] -#[template(path = "queue_id.html")] -struct QueueIdTemplate { - base: Base, - // Task - id: String, - hash: String, - date: String, - priority: i64, - // Commit - summary: String, - short: String, - reachable: i64, -} - -pub async fn get( - Path(id): Path, - State(config): State<&'static Config>, - State(db): State, -) -> somehow::Result { - let Some(task) = sqlx::query!( - "\ - SELECT \ - id, \ - hash, \ - date AS \"date: time::OffsetDateTime\", \ - priority, \ - message, \ - reachable \ - FROM queue \ - JOIN commits USING (hash) \ - WHERE id = ? \ - ", - id - ) - .fetch_optional(&db) - .await? - else { - return Ok(StatusCode::NOT_FOUND.into_response()); - }; - - Ok(QueueIdTemplate { - base: Base::new(config, Tab::Queue), - date: util::format_time(task.date), - id: task.id, - priority: task.priority, - summary: util::format_commit_summary(&task.message), - short: util::format_commit_short(&task.hash, &task.message), - hash: task.hash, - reachable: task.reachable, - } - .into_response()) -} diff --git a/templates/queue_id.html b/templates/queue_id.html deleted file mode 100644 index f756af5..0000000 --- a/templates/queue_id.html +++ /dev/null @@ -1,25 +0,0 @@ -{% extends "base.html" %} -{% import "util.html" as util %} - -{% block title %}{{ summary }}{% endblock %} - -{% block body %} -

Task

-
- task {{ id }} -
-
Created:
-
{{ date }}
- -
Priority:
-
{{ priority }}
- -
Commit:
-
- - {% call util::commit_short(short, reachable) %} - -
-
-
-{% endblock %} diff --git a/templates/queue_table.html b/templates/queue_table.html index 4320995..0b182a8 100644 --- a/templates/queue_table.html +++ b/templates/queue_table.html @@ -12,7 +12,7 @@ {% for task in tasks %} - + {% call util::commit_short(task.short, task.reachable) %}