-- +goose Up
-- +goose StatementBegin

-- Forward-zone-Targets: pro dns_zones-Row vom type='forward' steht
-- hier die Komma-separierte Upstream-Liste (z.B. "10.0.0.53, 8.8.8.8").
-- Für type='local' bleibt das Feld NULL — local-data kommt aus
-- dns_records.
ALTER TABLE dns_zones
    ADD COLUMN IF NOT EXISTS forward_to TEXT;

-- Plus: globale Settings-Tabelle (single-row) für die DNS-Resolver-
-- Konfiguration. listen_addresses ist Komma-separiert; access_acl
-- gibt die CIDR-Liste die den Resolver benutzen darf.
CREATE TABLE IF NOT EXISTS dns_settings (
    id                BIGINT PRIMARY KEY DEFAULT 1,
    listen_addresses  TEXT NOT NULL DEFAULT '127.0.0.1, ::1',
    listen_port       INTEGER NOT NULL DEFAULT 53,
    upstream_forwards TEXT NOT NULL DEFAULT '1.1.1.1, 9.9.9.9, 1.0.0.1',
    access_acl        TEXT NOT NULL DEFAULT '127.0.0.0/8, ::1/128, 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16',
    dnssec            BOOLEAN NOT NULL DEFAULT TRUE,
    qname_minimisation BOOLEAN NOT NULL DEFAULT TRUE,
    cache_min_ttl     INTEGER NOT NULL DEFAULT 60,
    cache_max_ttl     INTEGER NOT NULL DEFAULT 86400,
    updated_at        TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    CONSTRAINT dns_settings_singleton CHECK (id = 1)
);
INSERT INTO dns_settings (id) VALUES (1) ON CONFLICT DO NOTHING;

-- +goose StatementEnd

-- +goose Down
-- +goose StatementBegin
DROP TABLE IF EXISTS dns_settings;
ALTER TABLE dns_zones DROP COLUMN IF EXISTS forward_to;
-- +goose StatementEnd
