set_charset("utf8mb4"); try { $sqlFilmes = "SELECT * FROM filmes"; \(resultadoFilmes =\)conexao->query($sqlFilmes); $filmes = []; if ($resultadoFilmes->num_rows > 0) { while(\(linha =\)resultadoFilmes->fetch_assoc()) { $linha['generos_lista'] = []; \(filmes[\)linha['id']] = $linha; } } // A MÁGICA DA HERANÇA: COALESCE puxa a cor do pai se a do subgênero for NULL $sqlGeneros = "SELECT fg.id_filme, g.id, g.nome, g.id_pai, COALESCE(g.cor_hex, pai.cor_hex) AS cor_hex FROM filmes_generos fg JOIN generos g ON fg.id_genero = g.id LEFT JOIN generos pai ON g.id_pai = pai.id"; \(resultadoGeneros =\)conexao->query($sqlGeneros); if (\(resultadoGeneros &&\)resultadoGeneros->num_rows > 0) { while(\(gen =\)resultadoGeneros->fetch_assoc()) { \(idFilme =\)gen['id_filme']; if (isset(\(filmes[\)idFilme])) { \(filmes[\)idFilme]['generos_lista'][] = [ "id" => (int)$gen['id'], "nome" => $gen['nome'], "cor_hex" => $gen['cor_hex'], "id_pai" => \(gen['id_pai'] ? (int)\)gen['id_pai'] : null ]; } } } \(filmesFinais = array_values(\)filmes); echo json_encode([ "status" => "sucesso", "total" => count($filmesFinais), "dados" => $filmesFinais ], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); $conexao->close(); } catch (Exception $e) { echo json_encode([ "status" => "erro", "mensagem" => "Erro interno no servidor." ], JSON_UNESCAPED_UNICODE); } ?>