self-hosting/roles/mailserver_database/templates/tables.sql.j2

34 lines
1.2 KiB
Text
Raw Normal View History

2024-01-05 20:10:29 +01:00
CREATE TABLE IF NOT EXISTS virtual_domains (
id integer primary key generated by default as identity,
name varchar(50) NOT NULL UNIQUE
2024-01-05 20:10:29 +01:00
);
2024-01-12 20:44:44 +01:00
INSERT INTO virtual_domains (name) VALUES ('{{ virtual_domain }}') ON CONFLICT (name) DO NOTHING;
2024-01-05 20:10:29 +01:00
CREATE TABLE IF NOT EXISTS virtual_users (
id integer primary key generated by default as identity,
domain_id integer NOT NULL,
email varchar(254) NOT NULL UNIQUE,
2024-01-05 20:10:29 +01:00
password varchar(150) NOT NULL,
quota bigint NOT NULL DEFAULT 0,
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id)
ON DELETE CASCADE
);
2024-01-12 20:44:44 +01:00
{% for user in mailserver_database.virtual_users %}
INSERT INTO virtual_users (domain_id, email, password, quota) VALUES (
2024-01-12 20:44:44 +01:00
(SELECT id FROM virtual_domains WHERE name = '{{ virtual_domain }}'),
'{{ user.name }}@{{ virtual_domain }}',
'{{ user.pwd }}',
0
) ON CONFLICT (email) DO UPDATE SET password = EXCLUDED.password, quota = EXCLUDED.quota;
2024-01-12 20:44:44 +01:00
{% endfor %}
2024-01-05 20:10:29 +01:00
CREATE TABLE IF NOT EXISTS virtual_aliases (
id integer primary key generated by default as identity,
domain_id integer NOT NULL,
source varchar(254) NOT NULL UNIQUE,
2024-01-05 20:10:29 +01:00
destination varchar(254) NOT NULL,
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id)
ON DELETE CASCADE
);