diff --git a/domain-order-service/src/main/resources/db/changelog/changes/001-create-types.sql b/domain-order-service/src/main/resources/db/changelog/changes/001-create-types.sql index f15d73c..72e2239 100644 --- a/domain-order-service/src/main/resources/db/changelog/changes/001-create-types.sql +++ b/domain-order-service/src/main/resources/db/changelog/changes/001-create-types.sql @@ -11,3 +11,6 @@ CREATE TYPE order_status AS ENUM ('created','pending_payment','paid','cancelled' --changeset system:001-create-types-domain-member-role CREATE TYPE domain_member_role AS ENUM ('OWNER','USER'); + +--changeset system:001-create-types-domain-record-type +CREATE TYPE domain_record_type AS ENUM ('A','AAAA','CNAME','TXT','MX','SRV','CAA'); diff --git a/domain-order-service/src/main/resources/db/changelog/changes/dns_record/001-create-table.sql b/domain-order-service/src/main/resources/db/changelog/changes/dns_record/001-create-table.sql new file mode 100644 index 0000000..6bbda23 --- /dev/null +++ b/domain-order-service/src/main/resources/db/changelog/changes/dns_record/001-create-table.sql @@ -0,0 +1,13 @@ +--liquibase formatted sql + +--changeset system:dns_record-001-create-table +CREATE TABLE dns_record ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + domain_id uuid NOT NULL REFERENCES domain(id) ON DELETE CASCADE, + type domain_record_type NOT NULL, + name varchar(255) NOT NULL, + value varchar(1024) NOT NULL, + ttl integer NOT NULL CHECK (ttl > 0), + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); diff --git a/domain-order-service/src/main/resources/db/changelog/changes/dns_record/002-create-indexes.sql b/domain-order-service/src/main/resources/db/changelog/changes/dns_record/002-create-indexes.sql new file mode 100644 index 0000000..b15ed7b --- /dev/null +++ b/domain-order-service/src/main/resources/db/changelog/changes/dns_record/002-create-indexes.sql @@ -0,0 +1,4 @@ +--liquibase formatted sql + +--changeset system:dns_record-002-create-indexes +CREATE INDEX dns_record_domain_id_idx ON dns_record(domain_id); diff --git a/domain-order-service/src/main/resources/db/changelog/changes/dns_record/003-create-trigger.sql b/domain-order-service/src/main/resources/db/changelog/changes/dns_record/003-create-trigger.sql new file mode 100644 index 0000000..491a765 --- /dev/null +++ b/domain-order-service/src/main/resources/db/changelog/changes/dns_record/003-create-trigger.sql @@ -0,0 +1,9 @@ +--liquibase formatted sql + +--changeset system:dns_record-003-create-trigger +--preconditions onFail:MARK_RAN +--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM information_schema.triggers WHERE trigger_name = 'dns_record_set_updated_at' +CREATE TRIGGER dns_record_set_updated_at + BEFORE UPDATE ON dns_record + FOR EACH ROW + EXECUTE FUNCTION set_updated_at(); diff --git a/domain-order-service/src/main/resources/db/changelog/changes/ns_delegation/001-create-table.sql b/domain-order-service/src/main/resources/db/changelog/changes/ns_delegation/001-create-table.sql new file mode 100644 index 0000000..bef29dc --- /dev/null +++ b/domain-order-service/src/main/resources/db/changelog/changes/ns_delegation/001-create-table.sql @@ -0,0 +1,11 @@ +--liquibase formatted sql + +--changeset system:ns_delegation-001-create-table +CREATE TABLE ns_delegation ( + id uuid PRIMARY KEY DEFAULT gen_random_uuid(), + domain_id uuid NOT NULL UNIQUE REFERENCES domain(id) ON DELETE CASCADE, + ns_servers jsonb NOT NULL, + applied_at timestamptz, + created_at timestamptz NOT NULL DEFAULT now(), + updated_at timestamptz NOT NULL DEFAULT now() +); diff --git a/domain-order-service/src/main/resources/db/changelog/changes/ns_delegation/002-create-trigger.sql b/domain-order-service/src/main/resources/db/changelog/changes/ns_delegation/002-create-trigger.sql new file mode 100644 index 0000000..18ccd31 --- /dev/null +++ b/domain-order-service/src/main/resources/db/changelog/changes/ns_delegation/002-create-trigger.sql @@ -0,0 +1,9 @@ +--liquibase formatted sql + +--changeset system:ns_delegation-002-create-trigger +--preconditions onFail:MARK_RAN +--precondition-sql-check expectedResult:0 SELECT COUNT(*) FROM information_schema.triggers WHERE trigger_name = 'ns_delegation_set_updated_at' +CREATE TRIGGER ns_delegation_set_updated_at + BEFORE UPDATE ON ns_delegation + FOR EACH ROW + EXECUTE FUNCTION set_updated_at(); diff --git a/domain-order-service/src/main/resources/db/changelog/db.changelog-master.yaml b/domain-order-service/src/main/resources/db/changelog/db.changelog-master.yaml index 24eaf02..155b860 100644 --- a/domain-order-service/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/domain-order-service/src/main/resources/db/changelog/db.changelog-master.yaml @@ -41,3 +41,13 @@ databaseChangeLog: file: db/changelog/changes/reserved_name/002-create-trigger.sql - include: file: db/changelog/changes/forbidden_name/001-create-table.sql + - include: + file: db/changelog/changes/dns_record/001-create-table.sql + - include: + file: db/changelog/changes/dns_record/002-create-indexes.sql + - include: + file: db/changelog/changes/dns_record/003-create-trigger.sql + - include: + file: db/changelog/changes/ns_delegation/001-create-table.sql + - include: + file: db/changelog/changes/ns_delegation/002-create-trigger.sql \ No newline at end of file