<?xml version="1.0" encoding="UTF-8"?>
<changelog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="file:/var/app/InputFileSchema.xsd">
    <changeset
     id="SR-267_missing_rules:1"
     author="nlittmann"
     run-always="true"
     topic="event.orchardSoundRecording.fingerprintRules">
        <precondition>
            <sqlquery>
                <![CDATA[
                    with missing_rules AS (
                        WITH territories AS (
                            SELECT
                                DISTINCT(territory) AS territory
                            FROM
                                facts.prod.registry
                        ),
                        tuids AS (
                            SELECT
                                DISTINCT(tuid) AS tuid
                            FROM
                                facts.prod.registry AS reg
                                JOIN ORCHARD_APP_REPORTING_V2.ART_RELATIONS_PROD_ART_RELATIONS.TRACK AS tr ON reg.tuid = tr.id
                                JOIN ORCHARD_APP_REPORTING_V2.ART_RELATIONS_PROD_ART_RELATIONS.RELEASES AS r ON tr.release_id = r.release_id
                                AND r.deletions = 'N'
                        ),
                        filtered_tuids AS (
                            SELECT
                                DISTINCT (reg.tuid) AS tuid
                            FROM
                                ORCHARD_APP_REPORTING_V2.ART_RELATIONS_PROD_ART_RELATIONS.VENDOR AS v
                                JOIN ORCHARD_APP_REPORTING_V2.ART_RELATIONS_PROD_ART_RELATIONS.PROJECT AS pj ON pj.vendor_id = v.vendor_id
                                JOIN ORCHARD_APP_REPORTING_V2.ART_RELATIONS_PROD_ART_RELATIONS.RELEASES AS r ON r.project_id = pj.project_id
                                JOIN ORCHARD_APP_REPORTING_V2.ART_RELATIONS_PROD_ART_RELATIONS.TRACK AS tr ON tr.release_id = r.release_id
                                JOIN facts.prod.registry AS reg ON reg.tuid = tr.id
                            WHERE
                                v.VENDOR_ID in (35846, 35691, 33785, 17313, 22184)
                        )
                        SELECT
                            tuids.tuid,
                            territories.territory,
                            reg.TUID IS NOT NULL AS in_registry,
                            hr1.territory IS NOT NULL AS carveout_territory_rule_exists,
                            hr2.territory IS NOT NULL AS carveout_star_rule_exists
                        FROM
                            tuids 
                            JOIN territories
                            LEFT JOIN facts.prod.registry AS reg ON reg.tuid = tuids.tuid
                            AND reg.territory = territories.territory
                            LEFT JOIN facts.prod.HAS_FINGERPRINT_RULE AS hr1 ON TRY_TO_NUMBER(hr1.ORCHARD_OBJ_ID) = tuids.tuid
                            AND hr1.ORCHARD_OBJ_TYPE = 'Track'
                            AND hr1.SERVICE = 'meta'
                            AND hr1."POLICY" = 'carveout'
                            AND hr1.TERRITORY = territories.territory
                            LEFT JOIN facts.prod.HAS_FINGERPRINT_RULE AS hr2 ON TRY_TO_NUMBER(hr2.ORCHARD_OBJ_ID) = tuids.tuid
                            AND hr2.ORCHARD_OBJ_TYPE = 'Track'
                            AND hr2.SERVICE = 'meta'
                            AND hr2."POLICY" = 'carveout'
                            AND hr2.TERRITORY = '*' 
                        WHERE
                            (
                                in_registry = FALSE
                                AND (
                                    carveout_territory_rule_exists = FALSE
                                    OR carveout_star_rule_exists = FALSE
                                ) 
                                AND tuids.tuid IN (
                                    SELECT
                                        tuid
                                    from
                                        filtered_tuids
                                )
                            )
                    )
                    SELECT
                        CONCAT('tuid_star:', tuid) AS KEY,
                        OBJECT_CONSTRUCT() AS VALUE
                    FROM
                        missing_rules
                    GROUP BY 1, 2
                ]]>
            </sqlquery>
        </precondition>
    </changeset>
</changelog>
