get_btc_value 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # Dados de conexão PostgreSQL (use as variáveis do seu .env)
  2. DB_HOST="localhost"
  3. DB_PORT="5432"
  4. DB_USER="report_db"
  5. DB_NAME="report_db"
  6. DB_PASSWORD="123456"
  7. API_URL="https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd"
  8. # Formato da data para o dia anterior (YYYY-MM-DD)
  9. YESTERDAY_DATE=$(date -d "yesterday" '+%Y-%m-%d')
  10. echo "Buscando valor atual do Bitcoin (para salvar como $YESTERDAY_DATE)..."
  11. # Faz a requisição à API
  12. RESPONSE=$(curl -s "$API_URL")
  13. if [ -z "$RESPONSE" ]; then
  14. echo "Não foi possível obter resposta da API. Verifique sua conexão ou a URL."
  15. exit 1
  16. fi
  17. # Extrai o preço usando jq
  18. price=$(echo "$RESPONSE" | jq -r '.bitcoin.usd')
  19. if [ -z "$price" ] || [ "$price" == "null" ]; then
  20. echo "Não foi possível extrair o preço do Bitcoin da resposta da API."
  21. exit 1
  22. fi
  23. echo "Inserindo valor BTC de $price para a data $YESTERDAY_DATE no banco..."
  24. # Comando psql para inserir dados
  25. # O "ON CONFLICT (btc_value_date) DO NOTHING" garante que se a data já existir, não haverá erro de duplicidade.
  26. PGPASSWORD="$DB_PASSWORD" psql -h "$DB_HOST" -p "$DB_PORT" -U "$DB_USER" -d "$DB_NAME" <<EOF
  27. INSERT INTO btc_value (btc_value_value, btc_value_date)
  28. VALUES ('$price', '$YESTERDAY_DATE')
  29. ON CONFLICT (btc_value_date) DO NOTHING;
  30. EOF
  31. # Verifica o código de saída do psql
  32. if [ $? -eq 0 ]; then
  33. echo "Concluído! Valor inserido/ignorado com sucesso para a data $YESTERDAY_DATE."
  34. else
  35. echo "Erro ao inserir valor no banco de dados. Verifique os logs do PostgreSQL."
  36. fi