1CREATE TABLE domains (
2  id                    SERIAL PRIMARY KEY,
3  name                  VARCHAR(255) NOT NULL,
4  master                VARCHAR(128) DEFAULT NULL,
5  last_check            INT DEFAULT NULL,
6  type                  VARCHAR(6) NOT NULL,
7  notified_serial       BIGINT DEFAULT NULL,
8  account               VARCHAR(40) DEFAULT NULL,
9  CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT)))
10);
11
12CREATE UNIQUE INDEX name_index ON domains(name);
13
14
15CREATE TABLE records (
16  id                    BIGSERIAL PRIMARY KEY,
17  domain_id             INT DEFAULT NULL,
18  name                  VARCHAR(255) DEFAULT NULL,
19  type                  VARCHAR(10) DEFAULT NULL,
20  content               VARCHAR(65535) DEFAULT NULL,
21  ttl                   INT DEFAULT NULL,
22  prio                  INT DEFAULT NULL,
23  disabled              BOOL DEFAULT 'f',
24  ordername             VARCHAR(255),
25  auth                  BOOL DEFAULT 't',
26  CONSTRAINT domain_exists
27  FOREIGN KEY(domain_id) REFERENCES domains(id)
28  ON DELETE CASCADE,
29  CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT)))
30);
31
32CREATE INDEX rec_name_index ON records(name);
33CREATE INDEX nametype_index ON records(name,type);
34CREATE INDEX domain_id ON records(domain_id);
35CREATE INDEX recordorder ON records (domain_id, ordername text_pattern_ops);
36
37
38CREATE TABLE supermasters (
39  ip                    INET NOT NULL,
40  nameserver            VARCHAR(255) NOT NULL,
41  account               VARCHAR(40) NOT NULL,
42  PRIMARY KEY(ip, nameserver)
43);
44
45
46CREATE TABLE comments (
47  id                    SERIAL PRIMARY KEY,
48  domain_id             INT NOT NULL,
49  name                  VARCHAR(255) NOT NULL,
50  type                  VARCHAR(10) NOT NULL,
51  modified_at           INT NOT NULL,
52  account               VARCHAR(40) DEFAULT NULL,
53  comment               VARCHAR(65535) NOT NULL,
54  CONSTRAINT domain_exists
55  FOREIGN KEY(domain_id) REFERENCES domains(id)
56  ON DELETE CASCADE,
57  CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT)))
58);
59
60CREATE INDEX comments_domain_id_idx ON comments (domain_id);
61CREATE INDEX comments_name_type_idx ON comments (name, type);
62CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
63
64
65CREATE TABLE domainmetadata (
66  id                    SERIAL PRIMARY KEY,
67  domain_id             INT REFERENCES domains(id) ON DELETE CASCADE,
68  kind                  VARCHAR(32),
69  content               TEXT
70);
71
72CREATE INDEX domainidmetaindex ON domainmetadata(domain_id);
73
74
75CREATE TABLE cryptokeys (
76  id                    SERIAL PRIMARY KEY,
77  domain_id             INT REFERENCES domains(id) ON DELETE CASCADE,
78  flags                 INT NOT NULL,
79  active                BOOL,
80  published             BOOL DEFAULT TRUE,
81  content               TEXT
82);
83
84CREATE INDEX domainidindex ON cryptokeys(domain_id);
85
86
87CREATE TABLE tsigkeys (
88  id                    SERIAL PRIMARY KEY,
89  name                  VARCHAR(255),
90  algorithm             VARCHAR(50),
91  secret                VARCHAR(255),
92  CONSTRAINT c_lowercase_name CHECK (((name)::TEXT = LOWER((name)::TEXT)))
93);
94
95CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
96