Browse Source

further decomposition of update_data

TooManySugar 3 years ago
parent
commit
bde3a495b3
3 changed files with 35 additions and 22 deletions
  1. 1 1
      main.go
  2. 1 1
      message_handler.go
  3. 33 20
      update_data.go

+ 1 - 1
main.go

@@ -95,7 +95,7 @@ func Listener(botClient *tgbotapi.BotAPI) {
 func Updater() {
 	LogInfo.Println("Scheduler started!")
 	for {
-		go dBConnector.UpdateData()
+		go UpdateData()
 		time.Sleep(4 * time.Minute)
 	}
 }

+ 1 - 1
message_handler.go

@@ -32,7 +32,7 @@ func HandleMessage(reqMsg *tgbotapi.Message, botClient *tgbotapi.BotAPI) {
 		break
 
 	case "/forceupdate":
-		dBConnector.UpdateData()
+		UpdateData()
 		msg.Text = "Done!"
 		break
 

+ 33 - 20
update_data.go

@@ -3,6 +3,7 @@ package main
 import (
 	"fmt"
 	"math"
+	"strings"
 
 	tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api"
 
@@ -10,38 +11,45 @@ import (
 	"GoEthemineTelegramBot/botsettings"
 )
 
-func (c *Connection) UpdateData() {
+func UpdateData() {
 	LogInfo.Println("Updating data!")
 
-	walletList, err := c.UniqueWallets()
+	walletList, err := dBConnector.UniqueWallets()
 	if err != nil {
 		LogError.Println(err); return
 	}
 
 	for _, wallet := range walletList {
-		c.UpdateWallet(wallet)
+		UpdateWallet(wallet)
 	}
 }
 
-func (c *Connection) UpdateWallet(wallet string) {
+func UpdateWallet(wallet string) {
 	LogInfo.Printf(">> Getting data for wallet %s\n", wallet)
 	LogInfo.Printf("From: %s/miner/%s/currentStats\n", botsettings.ApiUrl(), wallet)
 	
 	// Get current stats for miner
 	currentStats, err := ethmineapi.MinerStats(botsettings.ApiUrl(), wallet)
 	if err != nil {
-		LogWarn.Println(err); return
+		if strings.Contains(err.Error(), "no data for miner") {
+			LogWarn.Println(err)
+		} else {
+			LogError.Println(err)
+		}
+		return
 	}
 
 	if currentStats.Status != "OK" {
-		LogError.Printf("Error getting response from pool for %s!\n", wallet); return
+		LogError.Printf("Error getting response from pool for %s!\n", wallet); 
+		return
 	}
 
 	// Line 42 of UpdateData.cs
 	// Search for the latest record for miner
-	lastMinerRecord, err := c.LatestMinerRecord(wallet)
+	lastMinerRecord, err := dBConnector.LatestMinerRecord(wallet)
 	if err != nil {
-		LogError.Println(err); return
+		LogError.Println(err)
+		return
 	}
 
 	// Exist previous record with the same time
@@ -64,28 +72,35 @@ func (c *Connection) UpdateWallet(wallet string) {
 	    Unpaid:           currentStats.Data.Unpaid,
 	}
 
-	result := c.GormDb.Create(&newMinerRecord)
+	result := dBConnector.GormDb.Create(&newMinerRecord)
 	if result.Error != nil {
 		LogError.Println(result.Error)
 		return
 	}
 	LogInfo.Printf("Added new row for miner %s\n", newMinerRecord.Wallet)
 
-	// Line 54 of UpdateData.cs
-	if lastMinerRecord != (Miner{}) && newMinerRecord.Unpaid < lastMinerRecord.Unpaid {
-		walletChats, err := c.ChatsWithWallet(newMinerRecord.Wallet)
+	if (newMinerRecord.Unpaid < lastMinerRecord.Unpaid) {
+		err = NotifyChats(wallet)
 		if err != nil {
 			LogError.Println(err)
-		} else {	
-			for _, chat := range walletChats {
-				LogInfo.Println("Sended 'Payout detected!' message to chat ", chat)
-				go myBotClient.Send(tgbotapi.NewMessage(chat, "Payout detected!"))
-			}
 		}
 	}
-	c.UpdateWorkers(newMinerRecord, lastMinerRecord)	
+	
+	dBConnector.UpdateWorkers(newMinerRecord, lastMinerRecord)
 }
 
+// at main... or somewhere else
+func NotifyChats(wallet string) (err error) {
+	walletChats, err := dBConnector.ChatsWithWallet(wallet)
+	if err != nil {
+		return err
+	} 
+	for _, chat := range walletChats {
+		LogInfo.Println("Sended 'Payout detected!' message to chat ", chat)
+		go myBotClient.Send(tgbotapi.NewMessage(chat, "Payout detected!"))
+	}
+	return nil
+}
 
 // UpdateWorkers updates data on workers of newMinerRecord
 func (c *Connection) UpdateWorkers(newMinerRecord Miner, lastMinerRecord Miner) {
@@ -124,8 +139,6 @@ func (c *Connection) UpdateWorkers(newMinerRecord Miner, lastMinerRecord Miner)
 	}
 }
 
-
-
 // updateWorker updates data on workerData 
 func (c *Connection) updateWorker(workerData ethmineapi.WorkerData, 
 	newMinerRecord Miner, lastMinerRecord Miner) {