Display in which revision this revision is an input
This commit is contained in:
parent
aa2ac96288
commit
185e0964b7
@ -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?,
|
||||
})?)
|
||||
}
|
||||
|
@ -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<Vec<InputModel>> {
|
||||
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)),
|
||||
|
@ -32,4 +32,5 @@ pub struct FlakeTemplate {
|
||||
pub struct RevisionTemplate {
|
||||
pub revision_uri: String,
|
||||
pub inputs: Vec<InputModel>,
|
||||
pub input_of: Vec<InputModel>,
|
||||
}
|
||||
|
@ -29,5 +29,13 @@
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<h2>Input of</h2>
|
||||
|
||||
<ul>
|
||||
{% for input in input_of %}
|
||||
<li><a href="{{ input.flake_revision_link() }}">{{ input.flake_revision_uri }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endblock %}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user