--
-- Copyright (c) 2025 SUSE LLC
--
-- This software is licensed to you under the GNU General Public License,
-- version 2 (GPLv2). There is NO WARRANTY for this software, express or
-- implied, including the implied warranties of MERCHANTABILITY or FITNESS
-- FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
-- along with this software; if not, see
-- http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
--

CREATE TABLE suseXccdfRuleFixCustom
(
    id                          BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
    rule_fix_id                 BIGINT NOT NULL
                                   CONSTRAINT suse_xccdf_rulefixcustom_fix_fk
                                   REFERENCES suseXccdfRuleFix (id)
                                   ON DELETE CASCADE,
    org_id                      BIGINT NOT NULL
                                   CONSTRAINT suse_xccdf_rulefixcustom_org_fk
                                   REFERENCES web_customer (id)
                                   ON DELETE CASCADE,
    custom_remediation_bash     TEXT,
    custom_remediation_salt     TEXT,
    created                     TIMESTAMPTZ DEFAULT current_timestamp NOT NULL,
    modified                    TIMESTAMPTZ DEFAULT current_timestamp NOT NULL,
    created_by                  BIGINT
                                   CONSTRAINT suse_xccdf_rulefixcustom_cby_fk
                                   REFERENCES web_contact (id)
                                   ON DELETE SET NULL,
    modified_by                 BIGINT
                                   CONSTRAINT suse_xccdf_rulefixcustom_mby_fk
                                   REFERENCES web_contact (id)
                                   ON DELETE SET NULL,
    CONSTRAINT check_at_least_one_custom CHECK (
        custom_remediation_bash IS NOT NULL OR 
        custom_remediation_salt IS NOT NULL
    )
);

CREATE UNIQUE INDEX suseXccdfRuleFixCustom_rulefix_org_uq
    ON suseXccdfRuleFixCustom (rule_fix_id, org_id);

