Sort emails by domain

This commit is contained in:
traxys 2023-08-29 21:52:36 +02:00
parent e983079d8e
commit 7414752ddd
3 changed files with 27 additions and 4 deletions

14
Cargo.lock generated
View file

@ -1153,6 +1153,15 @@ dependencies = [
"either",
]
[[package]]
name = "itertools"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
dependencies = [
"either",
]
[[package]]
name = "itoa"
version = "1.0.9"
@ -1273,6 +1282,7 @@ dependencies = [
"cookie",
"envious",
"futures-util",
"itertools 0.11.0",
"jwt-simple",
"once_cell",
"openidconnect",
@ -1474,7 +1484,7 @@ dependencies = [
"dyn-clone",
"hmac",
"http",
"itertools",
"itertools 0.10.5",
"log",
"oauth2",
"p256",
@ -2341,7 +2351,7 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c12bc9199d1db8234678b7051747c07f517cdcf019262d1847b94ec8b1aee3e"
dependencies = [
"itertools",
"itertools 0.10.5",
"nom",
"unicode_categories",
]

View file

@ -12,6 +12,7 @@ color-eyre = "0.6.2"
cookie = "0.17.0"
envious = "0.2.2"
futures-util = "0.3.28"
itertools = "0.11.0"
jwt-simple = "0.11.6"
once_cell = "1.18.0"
openidconnect = "3.3.0"

View file

@ -18,6 +18,7 @@ use base64::{engine::general_purpose, engine::Engine};
use color_eyre::eyre;
use cookie::{time::OffsetDateTime, SameSite};
use futures_util::TryStreamExt;
use itertools::Itertools;
use jwt_simple::prelude::*;
use once_cell::sync::Lazy;
use openidconnect::{
@ -519,7 +520,12 @@ async fn home(
) -> Result<Html<String>, Error> {
let mails = sqlx::query_as!(
Mail,
"SELECT mail FROM emails WHERE id = $1 AND alias = false",
r#"
SELECT mail
FROM emails
WHERE id = $1 AND alias = false
ORDER BY lower(substring(mail from position('@' in mail)+1 )),lower(mail)
"#,
user
)
.fetch_all(&state.db)
@ -527,7 +533,12 @@ async fn home(
let aliases = sqlx::query_as!(
Mail,
"SELECT mail FROM emails WHERE id = $1 AND alias = true",
r#"
SELECT mail
FROM emails
WHERE id = $1 AND alias = true
ORDER BY lower(substring(mail from position('@' in mail)+1 )),lower(mail)
"#,
user
)
.fetch_all(&state.db)
@ -552,6 +563,7 @@ async fn home(
let aliases: Vec<_> = aliases
.into_iter()
.map(|(mail, recipients)| Alias { mail, recipients })
.sorted_by(|a, b| a.mail.cmp(&b.mail))
.collect();
let mut context = tera::Context::new();