Change daily seed generation and update schema for recording failed daily runs
This commit is contained in:
1 parent
4710617f23
commit
2cb7be52eb
7 files changed
+68
-38
No files matched your search
+27
-2
@@ -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
@@ -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
|
||||
}
|
||||
Reference in new issue
Block a user