From 5c456fd5cd953a5b9de51439e7eb4db447027a43 Mon Sep 17 00:00:00 2001 From: AINDUSTRIES Date: Mon, 24 Nov 2025 21:21:19 +0100 Subject: [PATCH] Formatted file --- src/pages/projects.rs | 77 +++++++++++++++++++++++++++++-------------- 1 file changed, 53 insertions(+), 24 deletions(-) diff --git a/src/pages/projects.rs b/src/pages/projects.rs index 652d81b..c7e23e2 100644 --- a/src/pages/projects.rs +++ b/src/pages/projects.rs @@ -1,18 +1,18 @@ +use crate::AppState; use crate::html::elements::{Anchor, Heading, Link, Paragraph}; use crate::html::layouts::Division; use crate::html::pages::BasePage; use crate::html::{Render, boxed_vec}; -use actix_web::{Responder, get, web}; use actix_web::web::Data; +use actix_web::{Responder, get, web}; use serde::Deserialize; use sqlx::query_as; -use crate::AppState; #[derive(Deserialize)] struct Project { id: String, title: String, - description: String + description: String, } #[get("/projects")] @@ -25,23 +25,40 @@ async fn projects(app_state: Data) -> impl Responder { (I've done a lot of small projects but they are not worth it.)", ) .build(); - let projects = match query_as!(Project, "SELECT id, title, description FROM Projects").fetch_all(&app_state.pool).await { + let projects = match query_as!(Project, "SELECT id, title, description FROM Projects") + .fetch_all(&app_state.pool) + .await + { Ok(projects) => projects, - Err(_) => {vec![]} + Err(_) => { + vec![] + } }; - let items: Vec> = projects.into_iter().map(|p| { - let title = Heading::builder().text(p.title).build(); - let description = Paragraph::builder().classes(vec!["project-desc"]).text(p.description).build(); - let view = Anchor::builder().classes(vec!["project-view"]).href(format!("/projects/{}", p.id)).text("Learn More").build(); - let info = Division::builder() - .classes(vec!["project-info"]) - .elements(boxed_vec![description, view]) - .build(); - Box::new(Division::builder() - .classes(vec!["project"]) - .elements(boxed_vec![title, info]) - .build()) as Box - }).collect(); + let items: Vec> = projects + .into_iter() + .map(|p| { + let title = Heading::builder().text(p.title).build(); + let description = Paragraph::builder() + .classes(vec!["project-desc"]) + .text(p.description) + .build(); + let view = Anchor::builder() + .classes(vec!["project-view"]) + .href(format!("/projects/{}", p.id)) + .text("Learn More") + .build(); + let info = Division::builder() + .classes(vec!["project-info"]) + .elements(boxed_vec![description, view]) + .build(); + Box::new( + Division::builder() + .classes(vec!["project"]) + .elements(boxed_vec![title, info]) + .build(), + ) as Box + }) + .collect(); let css = Link::builder() .rel("stylesheet") .href("/static/css/projects.css") @@ -62,7 +79,7 @@ struct ProjectDetail { title: String, git_url: String, git_title: String, - description: String + description: String, } #[get("/projects/{project}")] async fn project(project: web::Path, app_state: Data) -> impl Responder { @@ -75,12 +92,19 @@ async fn project(project: web::Path, app_state: Data) -> impl .title(format!("Project-{}", project)) .head(boxed_vec![css]) .build(); - let project = match query_as!(ProjectDetail, "SELECT * FROM Project_Detail WHERE id = $1", project).fetch_one(&app_state.pool).await { + let project = match query_as!( + ProjectDetail, + "SELECT * FROM Project_Detail WHERE id = $1", + project + ) + .fetch_one(&app_state.pool) + .await + { Ok(project) => project, Err(error) => { // return not found page eprintln!("Error fetching project: {:?}", error); - return page.render() + return page.render(); } }; let title = Heading::builder().text(project.title).build(); @@ -88,9 +112,14 @@ async fn project(project: web::Path, app_state: Data) -> impl .href(project.git_url) .text(project.git_title) .build(); - let desc = Paragraph::builder().classes(vec!["description"]).text( - format!("{}

Wish to see more? Check out the gitea repository: {}", project.description, gitea.render()), - ).build(); + let desc = Paragraph::builder() + .classes(vec!["description"]) + .text(format!( + "{}

Wish to see more? Check out the gitea repository: {}", + project.description, + gitea.render() + )) + .build(); page.append_element_to_body(title); page.append_element_to_body(desc); page.render()