ALTER TABLE corridas
  ADD COLUMN IF NOT EXISTS finalizada_em DATETIME NULL AFTER aceita_em;

CREATE TABLE IF NOT EXISTS ganhos_diarios (
  id INT AUTO_INCREMENT PRIMARY KEY,
  id_motorista INT NOT NULL,
  data_ref DATE NOT NULL,
  total_corridas INT NOT NULL DEFAULT 0,
  total_valor DECIMAL(10,2) NOT NULL DEFAULT 0.00,
  atualizado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  CONSTRAINT fk_ganhos_diarios_motorista FOREIGN KEY (id_motorista) REFERENCES usuarios(id),
  UNIQUE KEY uk_ganhos_diarios_motorista_data (id_motorista, data_ref),
  INDEX idx_ganhos_diarios_data (data_ref)
);

INSERT INTO ganhos_diarios (id_motorista, data_ref, total_corridas, total_valor)
SELECT id_motorista, DATE(finalizada_em) AS data_ref, COUNT(*) AS total_corridas, COALESCE(SUM(ROUND(valor * 0.85, 2)), 0) AS total_valor
FROM corridas
WHERE status = 'finalizada'
  AND id_motorista IS NOT NULL
  AND finalizada_em IS NOT NULL
GROUP BY id_motorista, DATE(finalizada_em)
ON DUPLICATE KEY UPDATE
  total_corridas = VALUES(total_corridas),
  total_valor = VALUES(total_valor);
