diff --git a/lib/db.go b/lib/db.go index 4ae352d..7c14eb8 100644 --- a/lib/db.go +++ b/lib/db.go @@ -14,6 +14,7 @@ import ( ) var DBClient *sql.DB +var DBConnector *libsql.Connector func InitDB() error { dbUrl := os.Getenv("DATABASE_URL") @@ -29,21 +30,22 @@ func InitDB() error { dbPath = "/data/himbot.db" } - replica, replicaError := libsql.NewEmbeddedReplicaConnector( + connector, connectorError := libsql.NewEmbeddedReplicaConnector( dbPath, dbUrl, libsql.WithAuthToken(dbToken), ) - if replicaError != nil { - fmt.Fprintf(os.Stderr, "failed to open db %s: %s", dbUrl, replicaError) + if connectorError != nil { + fmt.Fprintf(os.Stderr, "failed to open db %s: %s", dbUrl, connectorError) os.Exit(1) } // finalDBUrl := fmt.Sprintf("%s?authToken=%s", dbUrl, dbToken) - client := sql.OpenDB(replica) + client := sql.OpenDB(connector) DBClient = client + DBConnector = connector return runMigrations() } diff --git a/lib/himbucks.go b/lib/himbucks.go index 2a2aa88..e5afca4 100644 --- a/lib/himbucks.go +++ b/lib/himbucks.go @@ -113,17 +113,24 @@ func ProcessMessage(s *discordgo.Session, m *discordgo.MessageCreate) error { func GetBalance(discordID, guildID string) (int, error) { var balance int - err := DBClient.QueryRow(` + + _, syncError := DBConnector.Sync() + + if syncError != nil { + fmt.Println("Error syncing database:", syncError) + } + + queryError := DBClient.QueryRow(` SELECT h.balance FROM himbucks h JOIN users u ON h.user_id = u.id WHERE u.discord_id = ? AND h.guild_id = ?`, discordID, guildID).Scan(&balance) - if err == sql.ErrNoRows { + if queryError == sql.ErrNoRows { return 0, nil } - if err != nil { - return 0, fmt.Errorf("failed to get balance: %w", err) + if queryError != nil { + return 0, fmt.Errorf("failed to get balance: %w", queryError) } return balance, nil }