Sort emails by domain
This commit is contained in:
parent
e983079d8e
commit
7414752ddd
3 changed files with 27 additions and 4 deletions
14
Cargo.lock
generated
14
Cargo.lock
generated
|
|
@ -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",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
16
src/main.rs
16
src/main.rs
|
|
@ -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();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue