CREATE OR REPLACE FUNCTION public.rebuild_coverage_after_site_change()
RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
    IF OLD.latitude IS DISTINCT FROM NEW.latitude
       OR OLD.longitude IS DISTINCT FROM NEW.longitude THEN
        UPDATE public.coverage_zones cz
           SET coverage_radius_m = cz.coverage_radius_m
          FROM public.tower_sectors ts
          JOIN public.cell_towers ct ON ct.tower_id = ts.tower_id
         WHERE cz.sector_id = ts.sector_id
           AND ct.site_id = NEW.site_id;
    END IF;

    RETURN NEW;
END;
$$;
