diff options
Diffstat (limited to 'hosts/surtr/postgresql.nix')
-rw-r--r-- | hosts/surtr/postgresql.nix | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/hosts/surtr/postgresql.nix b/hosts/surtr/postgresql.nix index 28ccd8c4..0352c27f 100644 --- a/hosts/surtr/postgresql.nix +++ b/hosts/surtr/postgresql.nix | |||
@@ -60,10 +60,23 @@ in { | |||
60 | BEGIN; | 60 | BEGIN; |
61 | SELECT _v.register_patch('002-citext', ARRAY['000-base'], null); | 61 | SELECT _v.register_patch('002-citext', ARRAY['000-base'], null); |
62 | 62 | ||
63 | DROP VIEW virtual_mailbox_domain; | ||
64 | DROP VIEW virtual_mailbox_mapping; | ||
65 | DROP VIEW imap_user; | ||
66 | DROP VIWE lmtp_mapping; | ||
67 | |||
63 | CREATE EXTENSION citext; | 68 | CREATE EXTENSION citext; |
69 | |||
64 | ALTER TABLE mailbox ALTER mailbox TYPE citext; | 70 | ALTER TABLE mailbox ALTER mailbox TYPE citext; |
65 | ALTER TABLE mailbox_mapping ALTER local TYPE citext; | 71 | ALTER TABLE mailbox_mapping ALTER local TYPE citext; |
66 | ALTER TABLE mailbox_mapping ALTER domain TYPE citext; | 72 | ALTER TABLE mailbox_mapping ALTER domain TYPE citext; |
73 | |||
74 | CREATE VIEW mailbox_quote_rule (id, mailbox, quota_rule) AS SELECT id, mailbox, (CASE WHEN quota_bytes IS NULL THEN '*:ignore' ELSE '*:bytes=' || quota_bytes END) AS quota_rule FROM mailbox; | ||
75 | |||
76 | CREATE VIEW virtual_mailbox_domain (domain) AS SELECT DISTINCT domain FROM mailbox_mapping; | ||
77 | CREATE VIEW virtual_mailbox_mapping (lookup) AS SELECT (CASE WHEN local IS NULL THEN ''' ELSE local END) || '@' || domain AS lookup FROM mailbox_mapping; | ||
78 | CREATE VIEW imap_user ("user", quota_rule) AS SELECT mailbox AS "user", quota_rule FROM mailbox_quota_rule; | ||
79 | CREATE VIEW lmtp_mapping ("user", quota_rule, local, domain) AS SELECT mailbox_quota_rule.mailbox AS "user", quota_rule, local, domain FROM mailbox_quota_rule INNER JOIN mailbox_mapping ON mailbox_quota_rule.id = mailbox_mapping.mailbox; | ||
67 | COMMIT; | 80 | COMMIT; |
68 | ''} | 81 | ''} |
69 | ''; | 82 | ''; |