From 185e0964b7cb25a53fbb16f957918cc060ee9ef0 Mon Sep 17 00:00:00 2001 From: clerie Date: Sat, 1 Feb 2025 20:43:17 +0100 Subject: [PATCH] Display in which revision this revision is an input --- src/bin/web.rs | 1 + src/storage.rs | 23 +++++++++++++++++++++++ src/templates.rs | 1 + templates/revision.html | 8 ++++++++ 4 files changed, 33 insertions(+) diff --git a/src/bin/web.rs b/src/bin/web.rs index 6f2ed1a..ee47dd5 100644 --- a/src/bin/web.rs +++ b/src/bin/web.rs @@ -136,5 +136,6 @@ async fn route_revision( Ok(render_template(&RevisionTemplate { revision_uri: revision_uri.clone(), inputs: state.storage.inputs_for_revision(&revision_uri).await?, + input_of: state.storage.input_of_for_revision(&revision_uri).await?, })?) } diff --git a/src/storage.rs b/src/storage.rs index c54d998..57f6500 100644 --- a/src/storage.rs +++ b/src/storage.rs @@ -86,6 +86,25 @@ impl Storage { .await .context("Failed to fetch data from database") } + + pub async fn input_of_for_revision(&self, revision_uri: &str) -> Result> { + sqlx::query_as(" + SELECT + flake_revision_uri, + input_name, + revision_uri, + uri, + nar_hash, + last_modified + FROM flake_revisions_inputs + WHERE revision_uri = ? + ORDER BY input_name + ") + .bind(&revision_uri) + .fetch_all(&self.db) + .await + .context("Failed to fetch data from database") + } } #[derive(FromRow)] @@ -132,6 +151,10 @@ pub struct InputModel { } impl InputModel { + pub fn flake_revision_link(&self) -> String { + format!("/r/{}", urlencode(&self.flake_revision_uri)) + } + pub fn revision_link(&self) -> String { match &self.revision_uri { Some(revision_uri) => format!("/r/{}", urlencode(&revision_uri)), diff --git a/src/templates.rs b/src/templates.rs index 4df8ec7..d09e236 100644 --- a/src/templates.rs +++ b/src/templates.rs @@ -32,4 +32,5 @@ pub struct FlakeTemplate { pub struct RevisionTemplate { pub revision_uri: String, pub inputs: Vec, + pub input_of: Vec, } diff --git a/templates/revision.html b/templates/revision.html index 2b75cfe..275d585 100644 --- a/templates/revision.html +++ b/templates/revision.html @@ -29,5 +29,13 @@ {% endfor %} + +

Input of

+ + {% endblock %}