Change daily seed generation and update schema for recording failed daily runs

This commit is contained in:
Flashfyre committed 2024-03-17 20:48:49 -04:00
1 parent 4710617f23
commit 2cb7be52eb
7 files changed
+68 -38

No files matched your search

+27 -2
View File
@@ -1,6 +1,8 @@
package db
import (
"database/sql"
"github.com/Flashfyre/pokerogue-server/defs"
)
@@ -13,12 +15,35 @@ func TryAddDailyRun(seed string) error {
return nil
}
func GetDailyRunSeed() (string, error) {
var seed string
err := handle.QueryRow("SELECT seed FROM dailyRuns WHERE date = UTC_DATE()").Scan(&seed)
if err != nil {
if err == sql.ErrNoRows {
return "", err
}
return "", err
}
return seed, nil
}
func AddOrUpdateAccountDailyRun(uuid []byte, score int, wave int) error {
_, err := handle.Exec("INSERT INTO accountDailyRuns (uuid, date, score, wave, timestamp) VALUES (?, UTC_DATE(), ?, ?, UTC_TIMESTAMP()) ON DUPLICATE KEY UPDATE score = ?, wave = GREATEST(wave, ?), timestamp = IF(score < ?, UTC_TIMESTAMP(), timestamp)", uuid, score, wave, score, wave, score)
if err != nil {
return err
}
return nil
}
func GetRankings(page int) ([]defs.DailyRanking, error) {
var rankings []defs.DailyRanking
offset := (page - 1) * 10
results, err := handle.Query("SELECT RANK() OVER (ORDER BY sc.score DESC, sc.timestamp), a.username, sc.score FROM seedCompletions sc JOIN dailyRuns dr ON dr.seed = sc.seed JOIN accounts a ON sc.uuid = a.uuid WHERE dr.date = UTC_DATE() LIMIT 10 OFFSET ?", offset)
results, err := handle.Query("SELECT RANK() OVER (ORDER BY adr.score DESC, adr.timestamp), a.username, adr.score, adr.wave FROM accountDailyRuns adr JOIN dailyRuns dr ON dr.date = adr.date JOIN accounts a ON adr.uuid = a.uuid WHERE dr.date = UTC_DATE() LIMIT 10 OFFSET ?", offset)
if err != nil {
return rankings, err
}
@@ -27,7 +52,7 @@ func GetRankings(page int) ([]defs.DailyRanking, error) {
for results.Next() {
ranking := defs.DailyRanking{}
err = results.Scan(&ranking.Rank, &ranking.Username, &ranking.Score)
err = results.Scan(&ranking.Rank, &ranking.Username, &ranking.Score, &ranking.Wave)
if err != nil {
return rankings, err
}
+4 -6
View File
@@ -1,26 +1,24 @@
package db
func TryAddSeedCompletion(uuid []byte, seed string, mode int, score int) (bool, error) {
func TryAddSeedCompletion(uuid []byte, seed string, mode int) (bool, error) {
if len(seed) < 24 {
for range 24 - len(seed) {
seed += "0"
}
}
newCompletion := true
var count int
err := handle.QueryRow("SELECT COUNT(*) FROM seedCompletions WHERE uuid = ? AND seed = ?", uuid, seed).Scan(&count)
if err != nil {
return false, err
} else if count > 0 {
newCompletion = false
return false, nil
}
_, err = handle.Exec("INSERT INTO seedCompletions (uuid, seed, mode, score, timestamp) VALUES (?, ?, ?, ?, UTC_TIMESTAMP()) ON DUPLICATE KEY UPDATE score = ?, timestamp = IF(score < ?, UTC_TIMESTAMP(), timestamp)", uuid, seed, mode, score, score, score)
_, err = handle.Exec("INSERT INTO seedCompletions (uuid, seed, mode, timestamp) VALUES (?, ?, ?, UTC_TIMESTAMP())", uuid, seed, mode)
if err != nil {
return false, err
}
return newCompletion, nil
return true, nil
}