[mailserver_database tables] Add UNIQUE constraints and insert default data

This commit is contained in:
Tunui Franken 2024-01-12 19:50:14 +01:00
parent 74cdf27ad8
commit 96b171baab

View file

@ -1,23 +1,29 @@
CREATE TABLE IF NOT EXISTS virtual_domains ( CREATE TABLE IF NOT EXISTS virtual_domains (
id integer primary key generated by default as identity, id integer primary key generated by default as identity,
name varchar(50) NOT NULL name varchar(50) NOT NULL UNIQUE
); );
INSERT INTO virtual_domains (name) VALUES ('tunuifranken.info') ON CONFLICT (name) DO NOTHING;
CREATE TABLE IF NOT EXISTS virtual_users ( CREATE TABLE IF NOT EXISTS virtual_users (
id integer primary key generated by default as identity, id integer primary key generated by default as identity,
domain_id integer NOT NULL, domain_id integer NOT NULL,
email varchar(254) NOT NULL, email varchar(254) NOT NULL UNIQUE,
password varchar(150) NOT NULL, password varchar(150) NOT NULL,
quota bigint NOT NULL DEFAULT 0, quota bigint NOT NULL DEFAULT 0,
UNIQUE (email),
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) FOREIGN KEY (domain_id) REFERENCES virtual_domains(id)
ON DELETE CASCADE ON DELETE CASCADE
); );
INSERT INTO virtual_users (domain_id, email, password, quota) VALUES (
(SELECT id FROM virtual_domains WHERE name = 'tunuifranken.info'),
'abuse@tunuifranken.info',
'foo',
0
) ON CONFLICT (email) DO UPDATE SET password = EXCLUDED.password, quota = EXCLUDED.quota;
CREATE TABLE IF NOT EXISTS virtual_aliases ( CREATE TABLE IF NOT EXISTS virtual_aliases (
id integer primary key generated by default as identity, id integer primary key generated by default as identity,
domain_id integer NOT NULL, domain_id integer NOT NULL,
source varchar(254) NOT NULL, source varchar(254) NOT NULL UNIQUE,
destination varchar(254) NOT NULL, destination varchar(254) NOT NULL,
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) FOREIGN KEY (domain_id) REFERENCES virtual_domains(id)
ON DELETE CASCADE ON DELETE CASCADE