Tabelas customizadas de projeto podem declarar colunas diferentes de id para atuar como identificador lógico do recurso (ex: page_id em publisher_pages, configurado como "id": "page_id" no project_tables_config.json).
Atualmente, o compilador e descompilador de recursos assumem a chave literal 'id' no array do registro em diversos locais de processamento e cache, resultando em:
-
Descompilação falhando ao escrever os arquivos físicos (
arquivos=0), pois o$idresolvido fica vazio (a chave'id'não existe no registro vindo do banco). -
Omissão de arquivos sem o log
RDR_DEBUG_FILE_EMPTY(já que a validação de ID falha antes do bloco de logs). -
Compilação pulando registros no cache/leitura de metadados.
Mudanças Necessárias
O engenheiro de execução deve ajustar o compilador e descompilador de recursos para ler dinamicamente o nome da coluna identificadora a partir de $cfg['id'] (com fallback para 'id'):
1. Descompilador (recuperacao-dados-recursos.php)
-
Resolução de ID: Na função
rdr_descompilar_registro(), extrair o$idlendo a coluna configurada em$cfg['id'](com fallback para'id'). -
Logs de Erro: Em
rdr_processar(), ajustar o log de avisoRDR_REGISTRO_SEM_LANGpara também buscar o ID lógico de forma dinâmica.
2. Compilador (atualizacao-dados-recursos.php)
-
Leitura de ID nos Loops: No laço principal de compilação dinâmica (
foreach (lerMetadadosDinamicos(...) as $rec)), extrair o ID usando a coluna configurada em$cfg['id']. -
Geração de Registro: Na função
processarRegistroDinamico(), obter$idusando a chave configurada em$cfg['id']. -
Indexador de Cache: Na construção do cache de registros existentes (
$existDinamicoCache), obter a chave de ID usando a configuração da tabela atual.
3. Testes Unitários (RecuperacaoDadosRecursosTest.php)
-
Criar um caso de teste unitário simulando uma tabela com coluna de ID customizada (ex:
page_ide PKid_publisher_pages). -
Validar que o compilador e o descompilador executam com sucesso o round-trip, gerando os arquivos físicos na pasta correta baseada no ID customizado e populando o arquivo de dados sem perda de atributos.