Commit 6652ca72 authored by Howl's avatar Howl
Browse files

Use userid rather than username

parent 9d911493
Loading
Loading
Loading
Loading
+8 −1
Changes for cache_data.go: 8 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -16,7 +16,14 @@ type s struct {

func opCacheData() {
	// get data
	const fetchQuery = `SELECT users.id as user_id, users.username, scores.play_mode, scores.score, scores.completed, scores.300_count, scores.100_count, scores.50_count FROM scores LEFT JOIN users ON users.username=scores.username WHERE users.allowed = '1'`
	const fetchQuery = `
	SELECT
		users.id as user_id, users.username, scores.play_mode,
		scores.score, scores.completed, scores.300_count,
		scores.100_count, scores.50_count
	FROM scores
	LEFT JOIN users ON users.id=scores.userid
	WHERE users.allowed = '1'`
	rows, err := db.Query(fetchQuery)
	if err != nil {
		queryError(err, fetchQuery)
+12 −12
Changes for calculate_pp.go: 12 added lines, 12 removed lines.
Original line number Diff line number Diff line
@@ -13,14 +13,14 @@ type ppUserMode struct {
}

func opCalculatePP() {
	const ppQuery = "SELECT scores.username, pp, scores.play_mode FROM scores LEFT JOIN users ON users.username=scores.username WHERE completed = '3' AND users.allowed = '1' ORDER BY pp DESC"
	const ppQuery = "SELECT scores.userid, pp, scores.play_mode FROM scores LEFT JOIN users ON users.id=scores.userid WHERE completed = '3' AND users.allowed = '1' ORDER BY pp DESC"
	rows, err := db.Query(ppQuery)
	if err != nil {
		queryError(err, ppQuery)
		return
	}

	users := make(map[string]*ppUserMode)
	users := make(map[int]*ppUserMode)
	var count int

	for rows.Next() {
@@ -28,30 +28,30 @@ func opCalculatePP() {
			fmt.Println("> CalculatePP:", count)
		}
		var (
			username string
			userid   int
			ppAmt    float64
			playMode int
		)
		err := rows.Scan(&username, &ppAmt, &playMode)
		err := rows.Scan(&userid, &ppAmt, &playMode)
		if err != nil {
			queryError(err, ppQuery)
			continue
		}
		if users[username] == nil {
			users[username] = &ppUserMode{}
		if users[userid] == nil {
			users[userid] = &ppUserMode{}
		}
		if users[username].countScores > 100 {
		if users[userid].countScores > 100 {
			continue
		}
		currentScorePP := round(round(ppAmt) * math.Pow(0.95, float64(users[username].countScores)))
		users[username].countScores++
		users[username].ppTotal += int(currentScorePP)
		currentScorePP := round(round(ppAmt) * math.Pow(0.95, float64(users[userid].countScores)))
		users[userid].countScores++
		users[userid].ppTotal += int(currentScorePP)
		count++
	}
	rows.Close()

	for username, ppUM := range users {
		op("UPDATE users_stats SET pp_std = ? WHERE username = ?", ppUM.ppTotal, username)
	for userid, ppUM := range users {
		op("UPDATE users_stats SET pp_std = ? WHERE id = ?", ppUM.ppTotal, userid)
	}

	color.Green("> CalculatePP: done!")
+7 −7
Changes for fix_score_duplicates.go: 7 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@ import (
type score struct {
	id         int
	beatmapMD5 string
	username   string
	userid     int
	score      int
	maxCombo   int
	mods       int
@@ -19,7 +19,7 @@ type score struct {

func (s score) sameAs(t score) bool {
	return s.beatmapMD5 == t.beatmapMD5 &&
		s.username == t.username &&
		s.userid == t.userid &&
		s.score == t.score &&
		s.maxCombo == t.maxCombo &&
		s.mods == t.mods &&
@@ -28,7 +28,7 @@ func (s score) sameAs(t score) bool {
}

func opFixScoreDuplicates() {
	const initQuery = "SELECT id, beatmap_md5, username, score, max_combo, mods, play_mode, accuracy FROM scores WHERE completed = '3'"
	const initQuery = "SELECT id, beatmap_md5, userid, score, max_combo, mods, play_mode, accuracy FROM scores WHERE completed = '3'"
	scores := []score{}
	rows, err := db.Query(initQuery)
	if err != nil {
@@ -40,7 +40,7 @@ func opFixScoreDuplicates() {
		rows.Scan(
			&currentScore.id,
			&currentScore.beatmapMD5,
			&currentScore.username,
			&currentScore.userid,
			&currentScore.score,
			&currentScore.maxCombo,
			&currentScore.mods,
@@ -56,13 +56,13 @@ func opFixScoreDuplicates() {
	remove := []int{}
	var ops int64
	for i := 0; i < len(scores); i++ {
		if ops%10000 == 0 {
			fmt.Println("> FixScoreDuplicates:", ops)
		}
		if contains(remove, scores[i].id) {
			continue
		}
		for j := i + 1; j < len(scores); j++ {
			if ops%5000000 == 0 {
				fmt.Println("> FixScoreDuplicates:", ops)
			}
			if scores[i].sameAs(scores[j]) && !contains(remove, scores[j].id) {
				fmt.Println("> FixScoreDuplicates: found one!")
				remove = append(remove, scores[j].id)