diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..678cf59 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +include bind-dlz-schema.sql diff --git a/bind-dlz-schema.sql b/bind-dlz-schema.sql new file mode 100644 index 0000000..c79a7c8 --- /dev/null +++ b/bind-dlz-schema.sql @@ -0,0 +1,245 @@ +-- +-- PostgreSQL database dump +-- + +SET statement_timeout = 0; +SET lock_timeout = 0; +SET client_encoding = 'UTF8'; +SET standard_conforming_strings = on; +SET check_function_bodies = false; +SET client_min_messages = warning; + +-- +-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: - +-- + +CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog; + + +-- +-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: - +-- + +COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; + + +SET search_path = public, pg_catalog; + +-- +-- Name: incr_zone_serial_delete(); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION incr_zone_serial_delete() RETURNS trigger + LANGUAGE plpgsql + AS $$ +BEGIN + UPDATE zones SET serial = serial + 1 WHERE name = OLD.zone; + RETURN NULL; +END +$$; + + +-- +-- Name: incr_zone_serial_insert(); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION incr_zone_serial_insert() RETURNS trigger + LANGUAGE plpgsql + AS $$ +BEGIN + UPDATE zones SET serial = serial + 1 WHERE name = NEW.zone; + RETURN NULL; +END +$$; + + +-- +-- Name: incr_zone_serial_update(); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION incr_zone_serial_update() RETURNS trigger + LANGUAGE plpgsql + AS $$ +BEGIN + UPDATE zones SET serial = serial + 1 WHERE name = NEW.zone; + IF (NEW.zone IS DISTINCT FROM OLD.zone) THEN + UPDATE zones SET serial = serial + 1 WHERE name = OLD.zone; + END IF; + RETURN NULL; +END +$$; + + +-- +-- Name: update_serial(); Type: FUNCTION; Schema: public; Owner: - +-- + +CREATE FUNCTION update_serial() RETURNS trigger + LANGUAGE plpgsql + AS $$ +BEGIN + IF (NEW.serial IS NOT DISTINCT FROM OLD.serial) THEN + NEW.serial = OLD.serial + 1; + END IF; + RETURN NEW; +END +$$; + + +SET default_tablespace = ''; + +SET default_with_oids = false; + +-- +-- Name: records; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE records ( + id integer NOT NULL, + zone character varying(255) NOT NULL, + host character varying(255) NOT NULL, + ttl integer DEFAULT 3600 NOT NULL, + rdtype character varying(9) NOT NULL, + mx_prio integer, + data text +); + + +-- +-- Name: zones; Type: TABLE; Schema: public; Owner: -; Tablespace: +-- + +CREATE TABLE zones ( + name character varying(254) NOT NULL, + ttl integer DEFAULT 3600 NOT NULL, + source character varying(254) NOT NULL, + contact character varying(254) NOT NULL, + serial integer DEFAULT 1024 NOT NULL, + refresh integer DEFAULT 900 NOT NULL, + retry integer DEFAULT 600 NOT NULL, + expire integer DEFAULT 86400 NOT NULL, + minimum integer DEFAULT 3600 NOT NULL +); + + +-- +-- Name: authority; Type: VIEW; Schema: public; Owner: - +-- + +CREATE VIEW authority AS + SELECT zones.name AS zone, + zones.ttl, + 'SOA'::character varying AS rdtype, + concat_ws(' '::text, zones.source, zones.contact, zones.serial, zones.refresh, zones.retry, zones.expire, zones.minimum) AS data + FROM zones +UNION + SELECT records.zone, + records.ttl, + records.rdtype, + records.data + FROM records + WHERE ((records.rdtype)::text = 'NS'::text); + + +-- +-- Name: allnodes; Type: VIEW; Schema: public; Owner: - +-- + +CREATE VIEW allnodes AS + SELECT records.zone, + records.ttl, + records.rdtype, + records.host, + concat_ws(' '::text, records.mx_prio, records.data) AS data + FROM records +UNION + SELECT authority.zone, + authority.ttl, + authority.rdtype, + '@'::character varying AS host, + authority.data + FROM authority; + + +-- +-- Name: records_id_seq; Type: SEQUENCE; Schema: public; Owner: - +-- + +CREATE SEQUENCE records_id_seq + START WITH 1 + INCREMENT BY 1 + NO MINVALUE + NO MAXVALUE + CACHE 1; + + +-- +-- Name: records_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: - +-- + +ALTER SEQUENCE records_id_seq OWNED BY records.id; + + +-- +-- Name: id; Type: DEFAULT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY records ALTER COLUMN id SET DEFAULT nextval('records_id_seq'::regclass); + + +-- +-- Name: records_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY records + ADD CONSTRAINT records_pkey PRIMARY KEY (id); + + +-- +-- Name: zones_pkey; Type: CONSTRAINT; Schema: public; Owner: -; Tablespace: +-- + +ALTER TABLE ONLY zones + ADD CONSTRAINT zones_pkey PRIMARY KEY (name); + + +-- +-- Name: incr_zone_serial_delete; Type: TRIGGER; Schema: public; Owner: - +-- + +CREATE TRIGGER incr_zone_serial_delete AFTER DELETE ON records FOR EACH ROW EXECUTE PROCEDURE incr_zone_serial_delete(); + + +-- +-- Name: incr_zone_serial_insert; Type: TRIGGER; Schema: public; Owner: - +-- + +CREATE TRIGGER incr_zone_serial_insert AFTER INSERT ON records FOR EACH ROW EXECUTE PROCEDURE incr_zone_serial_insert(); + + +-- +-- Name: incr_zone_serial_update; Type: TRIGGER; Schema: public; Owner: - +-- + +CREATE TRIGGER incr_zone_serial_update AFTER UPDATE ON records FOR EACH ROW EXECUTE PROCEDURE incr_zone_serial_update(); + + +-- +-- Name: update_serial; Type: TRIGGER; Schema: public; Owner: - +-- + +CREATE TRIGGER update_serial BEFORE UPDATE ON zones FOR EACH ROW EXECUTE PROCEDURE update_serial(); + + +-- +-- Name: records_zone_fkey; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY records + ADD CONSTRAINT records_zone_fkey FOREIGN KEY (zone) REFERENCES zones(name); + + +-- +-- PostgreSQL database dump complete +-- +