Rework stalwart queries

This commit is contained in:
traxys 2023-10-09 16:36:35 +02:00
parent be8a56fb21
commit e1d539e893

View file

@ -5,9 +5,18 @@
100 GB quota
```sql
SELECT name, 'individual' as type, password as secret, '' as description, 107374182400 as quota
FROM accounts
WHERE secret != NULL AND name = ?
SELECT
mail as name,
'individual' as type,
password as secret,
'' as description,
107374182400 as quota
FROM emails
JOIN accounts ON emails.id = accounts.id
WHERE
type = 'primary'
AND mail = ?
AND password IS NOT NULL
```
## members
@ -19,47 +28,51 @@ SELECT NULL as member_of WHERE 1=0
## recipients
```sql
SELECT name
FROM emails JOIN accounts on emails.id = accounts.id
WHERE mail = ?
SELECT dest as name FROM alias WHERE alias = ?
UNION
SELECT mail as name
FROM emails
WHERE id = (SELECT id FROM emails WHERE type = 'list' AND mail = ?)
AND type = 'primary'
UNION
SELECT mail as name FROM emails WHERE mail = ?
```
## emails
```sql
SELECT mail as address
FROM (
SELECT name || '@familleboyer.net' as mail, 0 as type FROM accounts WHERE name = ?
UNION
SELECT mail, (alias)::int + 1 as type
FROM emails JOIN accounts ON accounts.id = emails.id
WHERE name = ?
) as mails
ORDER BY type
SELECT mais as address
FROM emails
WHERE
(id = (SELECT id FROM emails WHERE mail = ?) AND type = 'alias')
OR mail = ?
ORDER BY type, mail
```
## verify
```sql
SELECT mail as address
FROM (
SELECT name || '@familleboyer.net' as mail FROM accounts
UNION
SELECT mail
FROM emails JOIN accounts ON accounts.id = emails.id
WHERE NOT alias
) as mails
WHERE mail LIKE '%' || ? || '%' ORDER BY mail LIMIT 5
FROM emails
WHERE
mail LIKE '%' || ? || '%'
AND type = 'primary'
ORDER BY address
LIMIT 5
```
## expand
```sql
SELECT NULL as address WHERE 1=0
SELECT recipient as address
FROM list_recipients
WHERE list = ?
ORDER BY address
LIMIT 50
```
## domains
```sql
SELECT 1 WHERE ? = 'familleboyer.net'
SELECT 1 FROM emails WHERE mail LIKE '%@' || ? LIMIT 1
```