From 18499631ea089f40d32db4f5502c59d84de5ba45 Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Fri, 24 Jan 2025 21:41:13 +0100 Subject: [PATCH] feat: add plant link to images page --- src/db/models/image.rs | 13 ++++++++++--- src/server/images.rs | 7 ++++--- templates/components/plant.html | 4 ++++ templates/views/images.html | 11 +++++++---- 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/db/models/image.rs b/src/db/models/image.rs index 159f1a0..539537f 100644 --- a/src/db/models/image.rs +++ b/src/db/models/image.rs @@ -2,7 +2,7 @@ use chrono::NaiveDate; use diesel::prelude::*; use serde::{Deserialize, Serialize}; -use crate::db::{schema::*, DbPool, DbResult, Pagination}; +use crate::db::{schema::*, DbPool, DbResult, Pagination, Plant}; #[derive(Serialize, Queryable, Selectable)] #[diesel(table_name = images)] @@ -62,8 +62,15 @@ impl Image { .optional()?) } - pub fn page(pool: &DbPool, page: Pagination, filter: ImageFilter) -> DbResult> { - let mut query = images::table.select(Self::as_select()).into_boxed(); + pub fn page_with_plants( + pool: &DbPool, + page: Pagination, + filter: ImageFilter, + ) -> DbResult> { + let mut query = images::table + .inner_join(plants::table) + .select((Self::as_select(), Plant::as_select())) + .into_boxed(); if let Some(plant_id) = filter.plant_id { query = query.filter(images::dsl::plant_id.eq(plant_id)); diff --git a/src/server/images.rs b/src/server/images.rs index 957f587..15e8894 100644 --- a/src/server/images.rs +++ b/src/server/images.rs @@ -66,9 +66,10 @@ async fn get_images( Query(filter): Query, headers: HeaderMap, ) -> super::Result> { - let images = tokio::task::spawn_blocking(move || db::Image::page(&ctx.pool, page, filter)) - .await - .unwrap()?; + let images = + tokio::task::spawn_blocking(move || db::Image::page_with_plants(&ctx.pool, page, filter)) + .await + .unwrap()?; let mut context = Context::new(); context.insert("images", &images); diff --git a/templates/components/plant.html b/templates/components/plant.html index 32432b0..a654bb5 100644 --- a/templates/components/plant.html +++ b/templates/components/plant.html @@ -35,3 +35,7 @@ {% endmacro %} + +{% macro name(plant) %} +{{ plant.name }} ({{ plant.species }}) +{% endmacro %} diff --git a/templates/views/images.html b/templates/views/images.html index 972c23a..d70cca0 100644 --- a/templates/views/images.html +++ b/templates/views/images.html @@ -1,10 +1,13 @@ +{% import "components/plant.html" as comp_plant %} +

Images

{% for image in images %} {% endfor %}