2024-03-16 18:51:13 -07:00
package db
2024-03-17 10:18:51 -07:00
import (
"github.com/Flashfyre/pokerogue-server/defs"
)
2024-03-16 18:51:13 -07:00
func TryAddDailyRun ( seed string ) error {
_ , err := handle . Exec ( "INSERT INTO dailyRuns (seed, date) VALUES (?, UTC_DATE()) ON DUPLICATE KEY UPDATE date = date" , seed )
if err != nil {
return err
}
return nil
}
2024-03-17 10:18:51 -07:00
2024-03-17 17:48:49 -07:00
func AddOrUpdateAccountDailyRun ( uuid [ ] byte , score int , wave int ) error {
2024-03-22 18:42:27 -07:00
_ , err := handle . Exec ( "INSERT INTO accountDailyRuns (uuid, date, score, wave, timestamp) VALUES (?, UTC_DATE(), ?, ?, UTC_TIMESTAMP()) ON DUPLICATE KEY UPDATE score = GREATEST(score, ?), wave = GREATEST(wave, ?), timestamp = IF(score < ?, UTC_TIMESTAMP(), timestamp)" , uuid , score , wave , score , wave , score )
2024-03-17 17:48:49 -07:00
if err != nil {
return err
}
return nil
}
2024-03-18 16:55:02 -07:00
func FetchRankings ( page int ) ( [ ] defs . DailyRanking , error ) {
2024-03-17 10:18:51 -07:00
var rankings [ ] defs . DailyRanking
2024-03-17 10:36:32 -07:00
offset := ( page - 1 ) * 10
2024-03-17 17:48:49 -07:00
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 )
2024-03-17 10:18:51 -07:00
if err != nil {
return rankings , err
}
defer results . Close ( )
for results . Next ( ) {
ranking := defs . DailyRanking { }
2024-03-17 17:48:49 -07:00
err = results . Scan ( & ranking . Rank , & ranking . Username , & ranking . Score , & ranking . Wave )
2024-03-17 10:18:51 -07:00
if err != nil {
return rankings , err
}
rankings = append ( rankings , ranking )
}
return rankings , nil
}