Boa noite lista,
Eu gostaria de solicitar ajudar com um problema que descobri recentemente enquanto escrevia um script para extrair dados de uma api e registrar um arquivo txt para dar carga em outro sistema ja com os dados formatados.
À princípio tudo ia bem até que eu descobri algo muito interessante (e para o qual não consigo sair).
Eu tenho uma api onde eu posso consultar os dados que preciso para fazer a saída em um txt. Por motivos de segurança vou deixar a URL sem o token de acesso, mas o raciocínio não será prejudicado (para os que puderem ajudar).
Vamos ao problema :P
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#1ª Parte (Chamada da URL via cURL + filtragem de dados para saída JSON)
\
curl -s --request GET --url "
https://api.gupy.io/api/v1/jobs?fields=all&perPage=100&page=1" --header 'Accept: application/json' --header 'Authorization: $TOKEN' \
| jq -r '.results[] | select((.branchName!=null) and .managerName!=null)' | jq -r
'"\(.id),\(.name),\(.roleName),\(.departmentName),\(.managerName),\(.branchName)"' \ | while IFS=, read jobId jobName jobRoleName departmentName jobManagerName branchName; \
do \
\
#2ª Parte (para cada jobId encontrado no while acima e que tenha um novo contratado já com data de admissao definida, extrai-se os dados relevantes do candidato, separando por virgulas)
\
| jq 'def older(days): (now - (strptime("%Y'-'%m'-'%d'T'%H':'%M':'%S'.000'%z") | mktime)) < (days*86400); .results[] | select (.hiringDate | older(1))' \ | jq -r '"
'"$jobId"',\(.id),\(.hiringDate),\(.candidate.name),\(.candidate.lastName),\(.candidate.identificationDocument),'"$jobRoleName"','"$departmentName"',\(.candidate.mobileNumber),\(.candidate.email),'"$jobManagerName"','"$branchName"'"' \
| while IFS=, read jobId applicationId hiringDate candidateName candidateLastName candidateIdentificationDocument jobRoleName departmentName candidateMobileNumber candidateEmail jobManagerName branchName; \
do \
echo "$hiringDate,$candidateName,$candidateLastName,$candidateIdentificationDocument,$jobRoleName,$departmentName,$candidateMobileNumber,$candidateEmail,$jobManagerName,$branchName"; done; \
done;
O que de fato acontece é que se eu tenho uma determinado job com mais de um candidato contratado, apenas a primeira posição é mostrada.
Eu tentei fazer um FOR dentro desse último while mas o resultado foi uma repetição de um número de registros. Ex: 4 contratados de uma vaga aparecendo 4x cada.