CREATE INDEX IF NOT EXISTS projects_started_at_idx
  ON projects (started_at);

CREATE INDEX IF NOT EXISTS projects_ended_at_idx
  ON projects (ended_at);

UPDATE projects p
SET
  started_at = COALESCE(
    (
      SELECT MIN(ms.sampled_at)
      FROM meter_samples ms
      WHERE ms.project_id = p.id
    ),
    p.started_at,
    p.created_at
  ),
  ended_at = COALESCE(
    (
      SELECT MAX(ms.sampled_at)
      FROM meter_samples ms
      WHERE ms.project_id = p.id
    ),
    p.ended_at
  )
WHERE EXISTS (
  SELECT 1
  FROM meter_samples ms
  WHERE ms.project_id = p.id
);
