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",
|
"either",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itertools"
|
||||||
|
version = "0.11.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "1.0.9"
|
version = "1.0.9"
|
||||||
|
|
@ -1273,6 +1282,7 @@ dependencies = [
|
||||||
"cookie",
|
"cookie",
|
||||||
"envious",
|
"envious",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
|
"itertools 0.11.0",
|
||||||
"jwt-simple",
|
"jwt-simple",
|
||||||
"once_cell",
|
"once_cell",
|
||||||
"openidconnect",
|
"openidconnect",
|
||||||
|
|
@ -1474,7 +1484,7 @@ dependencies = [
|
||||||
"dyn-clone",
|
"dyn-clone",
|
||||||
"hmac",
|
"hmac",
|
||||||
"http",
|
"http",
|
||||||
"itertools",
|
"itertools 0.10.5",
|
||||||
"log",
|
"log",
|
||||||
"oauth2",
|
"oauth2",
|
||||||
"p256",
|
"p256",
|
||||||
|
|
@ -2341,7 +2351,7 @@ version = "0.2.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0c12bc9199d1db8234678b7051747c07f517cdcf019262d1847b94ec8b1aee3e"
|
checksum = "0c12bc9199d1db8234678b7051747c07f517cdcf019262d1847b94ec8b1aee3e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"itertools",
|
"itertools 0.10.5",
|
||||||
"nom",
|
"nom",
|
||||||
"unicode_categories",
|
"unicode_categories",
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ color-eyre = "0.6.2"
|
||||||
cookie = "0.17.0"
|
cookie = "0.17.0"
|
||||||
envious = "0.2.2"
|
envious = "0.2.2"
|
||||||
futures-util = "0.3.28"
|
futures-util = "0.3.28"
|
||||||
|
itertools = "0.11.0"
|
||||||
jwt-simple = "0.11.6"
|
jwt-simple = "0.11.6"
|
||||||
once_cell = "1.18.0"
|
once_cell = "1.18.0"
|
||||||
openidconnect = "3.3.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 color_eyre::eyre;
|
||||||
use cookie::{time::OffsetDateTime, SameSite};
|
use cookie::{time::OffsetDateTime, SameSite};
|
||||||
use futures_util::TryStreamExt;
|
use futures_util::TryStreamExt;
|
||||||
|
use itertools::Itertools;
|
||||||
use jwt_simple::prelude::*;
|
use jwt_simple::prelude::*;
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use openidconnect::{
|
use openidconnect::{
|
||||||
|
|
@ -519,7 +520,12 @@ async fn home(
|
||||||
) -> Result<Html<String>, Error> {
|
) -> Result<Html<String>, Error> {
|
||||||
let mails = sqlx::query_as!(
|
let mails = sqlx::query_as!(
|
||||||
Mail,
|
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
|
user
|
||||||
)
|
)
|
||||||
.fetch_all(&state.db)
|
.fetch_all(&state.db)
|
||||||
|
|
@ -527,7 +533,12 @@ async fn home(
|
||||||
|
|
||||||
let aliases = sqlx::query_as!(
|
let aliases = sqlx::query_as!(
|
||||||
Mail,
|
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
|
user
|
||||||
)
|
)
|
||||||
.fetch_all(&state.db)
|
.fetch_all(&state.db)
|
||||||
|
|
@ -552,6 +563,7 @@ async fn home(
|
||||||
let aliases: Vec<_> = aliases
|
let aliases: Vec<_> = aliases
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|(mail, recipients)| Alias { mail, recipients })
|
.map(|(mail, recipients)| Alias { mail, recipients })
|
||||||
|
.sorted_by(|a, b| a.mail.cmp(&b.mail))
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let mut context = tera::Context::new();
|
let mut context = tera::Context::new();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue