#!/bin/bash ## TODO: Prendre en compte les transactions déjà appliqués start=`date +%s` date=$(date +'%d-%m-%y à %H:%M') echo "### $date ###" ## Inistialisation DUNITER=$(grep g1_node ../config/config.php | awk '{ print $3}' | tr -d ';' | tr -d "'") TXBLOCKS=$(curl -s $DUNITER/blockchain/with/tx | jq '.result.blocks[]') TXBLOCKS=$(echo "$TXBLOCKS" | tail -n 2 | tr '\n' ' ') keyword="\[Achat GMarche] : " ## Récupération des transactions avec commentaire GMarche for i in $TXBLOCKS; do result=$(curl -s $DUNITER/blockchain/block/$i | jq '.transactions[].comment' | grep -v '""' | tr -d '"') result=$(echo "$result" | grep "$keyword") [[ ! -z $result ]] && isSell+=$(echo -e "$result;") sleep 1 done ## Ajout des transactions en piscine pour les users GMarche req="SELECT pubkey FROM users;" usersPubkeys=$(sudo mysql --database gmarche -e "$req" | grep .) for i in $usersPubkeys; do isSell+=$(curl -s $DUNITER/tx/history/$i/pending | jq '. | select(.history.sending == [])' | jq '.history.pending[].comment' | tr -d '"') #[ ! -z "$pendingTX" ] && echo "$pendingTX" done ## Retrait de l'identifiant gmarche des commentaires isSell=$(echo $isSell | sed "s/$keyword//g") [[ ! -z $isSell ]] && echo "$isSell est vendu" ## Retrait d'un quantité pour les articles vendu IFS=';'; ADDR=($isSell); unset IFS; for i in "${ADDR[@]}"; do #req="UPDATE products SET status = 'solde' WHERE name = '$i';" req="UPDATE products SET quantite = CASE WHEN quantite = 0 THEN quantite ELSE quantite - 1 END WHERE name = '$i';" sudo mysql --database gmarche -e "$req" done #sudo mysql --database gmarche -e "SELECT name,status FROM products;" end=`date +%s` runtime=$((end-start)) echo "Temps d'execution: ${runtime}s" exit 0