Better syncing

This commit is contained in:
Atridad Lahiji 2024-11-05 12:49:10 -06:00
parent 0194c3d4fe
commit 46c24134d5
Signed by: atridad
SSH key fingerprint: SHA256:LGomp8Opq0jz+7kbwNcdfTcuaLRb5Nh0k5AchDDb438
2 changed files with 17 additions and 8 deletions

View file

@ -14,6 +14,7 @@ import (
) )
var DBClient *sql.DB var DBClient *sql.DB
var DBConnector *libsql.Connector
func InitDB() error { func InitDB() error {
dbUrl := os.Getenv("DATABASE_URL") dbUrl := os.Getenv("DATABASE_URL")
@ -29,21 +30,22 @@ func InitDB() error {
dbPath = "/data/himbot.db" dbPath = "/data/himbot.db"
} }
replica, replicaError := libsql.NewEmbeddedReplicaConnector( connector, connectorError := libsql.NewEmbeddedReplicaConnector(
dbPath, dbPath,
dbUrl, dbUrl,
libsql.WithAuthToken(dbToken), libsql.WithAuthToken(dbToken),
) )
if replicaError != nil { if connectorError != nil {
fmt.Fprintf(os.Stderr, "failed to open db %s: %s", dbUrl, replicaError) fmt.Fprintf(os.Stderr, "failed to open db %s: %s", dbUrl, connectorError)
os.Exit(1) os.Exit(1)
} }
// finalDBUrl := fmt.Sprintf("%s?authToken=%s", dbUrl, dbToken) // finalDBUrl := fmt.Sprintf("%s?authToken=%s", dbUrl, dbToken)
client := sql.OpenDB(replica) client := sql.OpenDB(connector)
DBClient = client DBClient = client
DBConnector = connector
return runMigrations() return runMigrations()
} }

View file

@ -113,17 +113,24 @@ func ProcessMessage(s *discordgo.Session, m *discordgo.MessageCreate) error {
func GetBalance(discordID, guildID string) (int, error) { func GetBalance(discordID, guildID string) (int, error) {
var balance int var balance int
err := DBClient.QueryRow(`
_, syncError := DBConnector.Sync()
if syncError != nil {
fmt.Println("Error syncing database:", syncError)
}
queryError := DBClient.QueryRow(`
SELECT h.balance SELECT h.balance
FROM himbucks h FROM himbucks h
JOIN users u ON h.user_id = u.id JOIN users u ON h.user_id = u.id
WHERE u.discord_id = ? AND h.guild_id = ?`, WHERE u.discord_id = ? AND h.guild_id = ?`,
discordID, guildID).Scan(&balance) discordID, guildID).Scan(&balance)
if err == sql.ErrNoRows { if queryError == sql.ErrNoRows {
return 0, nil return 0, nil
} }
if err != nil { if queryError != nil {
return 0, fmt.Errorf("failed to get balance: %w", err) return 0, fmt.Errorf("failed to get balance: %w", queryError)
} }
return balance, nil return balance, nil
} }