[
	group_by(.user_name)[] |
	group_by(.date_added)[] |
    group_by(.change_details)[] |
    [
    	{
	        status: "unknown",
			orchadmin_user_id: (.[0].user_name | tonumber),
			date: (.[0].date_added),
	        upcs: ("(" + (map(.upc | tonumber) | sort | join(",")) + ")")
	    },
	    (
	    	.[0].change_details | 
	    	capture("Territories \\[(?<territories>.*)\\] requested to be (?<op>.*)") |
	    	{
	    		op,
	    		territories: ("(" + (.territories | split(",") | map(. | tonumber) | sort | join(",")) + ")") 
	    	}
	    )
    ] | 
    add |
    {
    	orchadmin_user_id,
    	date,
    	upcs,
    	op,
    	territories,
    	sql: (
    		if (.op == "added") then
	    		"select r.upc, c.id from releases r cross join country c left join release_territory_restriction rtr on r.upc = rtr.upc and rtr.country_id = c.id where r.upc in " + .upcs + " and c.id in " + .territories + " group by r.upc, c.id having count(rtr.country_id) = 0;"
	    	else
	    		"select r.upc, c.id from releases r cross join country c left join release_territory_restriction rtr on r.upc = rtr.upc and rtr.country_id = c.id where r.upc in " + .upcs + " and c.id in " + .territories + " group by r.upc, c.id having count(rtr.country_id) > 0;"
	    	end
    	)


    }
]
