From cf8d4f8087539a1799cb14d329c4cdbf44d63479 Mon Sep 17 00:00:00 2001 From: philipp Date: Mon, 4 Mar 2024 16:55:33 +0100 Subject: [PATCH] finish --- Cargo.lock | 22 ++++++++++++++++++++++ Cargo.toml | 1 + src/model/role.rs | 2 +- src/tera/admin/mod.rs | 25 +++++++++++++++++++++++-- templates/admin/list/result.html.tera | 6 +++++- 5 files changed, 52 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d425d3c..1e52887 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -521,6 +521,27 @@ dependencies = [ "typenum", ] +[[package]] +name = "csv" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" +dependencies = [ + "csv-core", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" +dependencies = [ + "memchr", +] + [[package]] name = "ctr" version = "0.9.2" @@ -2195,6 +2216,7 @@ dependencies = [ "argon2", "chrono", "chrono-tz", + "csv", "env_logger", "futures", "ics", diff --git a/Cargo.toml b/Cargo.toml index 259dd1c..7cd7572 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,6 +23,7 @@ tera = { version = "1.18", features = ["date-locale"], optional = true} ics = "0.5" futures = "0.3" lettre = "0.11" +csv = "1.3" [target.'cfg(not(windows))'.dependencies] openssl = { version = "0.10", features = [ "vendored" ] } diff --git a/src/model/role.rs b/src/model/role.rs index 765a168..c1a51ee 100644 --- a/src/model/role.rs +++ b/src/model/role.rs @@ -47,7 +47,7 @@ WHERE name like ? pub async fn names_from_role(&self, db: &SqlitePool) -> Vec { let query = format!( - "SELECT u.name. + "SELECT u.name FROM user u JOIN user_role ur ON u.id = ur.user_id JOIN role r ON ur.role_id = r.id diff --git a/src/tera/admin/mod.rs b/src/tera/admin/mod.rs index 2daf4c6..27b24b8 100644 --- a/src/tera/admin/mod.rs +++ b/src/tera/admin/mod.rs @@ -1,3 +1,4 @@ +use csv::ReaderBuilder; use rocket::{form::Form, get, post, routes, FromForm, Route, State}; use rocket_dyn_templates::{context, Template}; use sqlx::SqlitePool; @@ -41,10 +42,30 @@ async fn list(db: &State, _admin: AdminUser, list_form: Form

List - Result

- {{result}} +
    + {% for person in result%} +
  1. {{person}}
  2. + {% endfor %} +
{% endblock content %}