Files
grosbeak/internal/domain64/sqlc/schema.sql
2025-11-30 14:06:55 -05:00

40 lines
1.2 KiB
SQL

CREATE TABLE IF NOT EXISTS tlds (
tld_id INTEGER PRIMARY KEY NOT NULL,
tld TEXT NOT NULL
);
CREATE TABLE IF NOT EXISTS domains (
id INTEGER PRIMARY KEY,
tld_id INTEGER NOT NULL REFERENCES tlds(tld_id),
domain_id INTEGER NOT NULL,
domain TEXT NOT NULL
);
CREATE UNIQUE INDEX IF NOT EXISTS ndx_domains_uniq ON domains(tld_id, domain_id);
CREATE TABLE IF NOT EXISTS subdomains (
id INTEGER PRIMARY KEY,
tld_id INTEGER NOT NULL REFERENCES tlds(tld_id),
domain_id INTEGER NOT NULL REFERENCES domains(domain_id),
subdomain_id INTEGER NOT NULL,
subdomain TEXT NOT NULL
);
CREATE UNIQUE INDEX IF NOT EXISTS ndx_subdomains_uniq ON subdomains(tld_id, domain_id, subdomain_id);
CREATE TABLE IF NOT EXISTS paths (
id INTEGER PRIMARY KEY,
tld_id INTEGER NOT NULL REFERENCES tlds(tld_id),
domain_id INTEGER NOT NULL REFERENCES domains(domain_id),
subdomain_id INTEGER NOT NULL REFERENCES subdomains(subdomain_id),
path_id INTEGER NOT NULL,
path TEXT NOT NULL
);
CREATE UNIQUE INDEX IF NOT EXISTS ndx_paths_uniq ON paths(tld_id, domain_id, subdomain_id, path_id);
CREATE TABLE IF NOT EXISTS domain64 (
id INTEGER PRIMARY KEY AUTOINCREMENT,
rfqdn TEXT,
d64 BIGINT UNIQUE NOT NULL
);