Add leaderboard_rank to scores table
This commit is contained in:
parent
c63d6ecc00
commit
68ad9bb23a
@ -26,8 +26,12 @@ val IDX_REPLAY_IDS_PAIRS: Index = Internal.createIndex(DSL.name("idx_replay_ids_
|
|||||||
val IDX_SCORES_BEATMAP_ID: Index = Internal.createIndex(DSL.name("idx_scores_beatmap_id"), Scores.SCORES, arrayOf(Scores.SCORES.BEATMAP_ID), false)
|
val IDX_SCORES_BEATMAP_ID: Index = Internal.createIndex(DSL.name("idx_scores_beatmap_id"), Scores.SCORES, arrayOf(Scores.SCORES.BEATMAP_ID), false)
|
||||||
val IDX_SCORES_BEATMAP_ID_REPLAY_ID: Index = Internal.createIndex(DSL.name("idx_scores_beatmap_id_replay_id"), Scores.SCORES, arrayOf(Scores.SCORES.BEATMAP_ID, Scores.SCORES.REPLAY_ID), false)
|
val IDX_SCORES_BEATMAP_ID_REPLAY_ID: Index = Internal.createIndex(DSL.name("idx_scores_beatmap_id_replay_id"), Scores.SCORES, arrayOf(Scores.SCORES.BEATMAP_ID, Scores.SCORES.REPLAY_ID), false)
|
||||||
val IDX_SCORES_BEATMAP_ID_REPLAY_ID_UR: Index = Internal.createIndex(DSL.name("idx_scores_beatmap_id_replay_id_ur"), Scores.SCORES, arrayOf(Scores.SCORES.BEATMAP_ID, Scores.SCORES.REPLAY_ID, Scores.SCORES.UR), false)
|
val IDX_SCORES_BEATMAP_ID_REPLAY_ID_UR: Index = Internal.createIndex(DSL.name("idx_scores_beatmap_id_replay_id_ur"), Scores.SCORES, arrayOf(Scores.SCORES.BEATMAP_ID, Scores.SCORES.REPLAY_ID, Scores.SCORES.UR), false)
|
||||||
|
val IDX_SCORES_IS_BANNED: Index = Internal.createIndex(DSL.name("idx_scores_is_banned"), Scores.SCORES, arrayOf(Scores.SCORES.IS_BANNED), false)
|
||||||
val IDX_SCORES_JUDGEMENTS_SCORE_ID: Index = Internal.createIndex(DSL.name("idx_scores_judgements_score_id"), ScoresJudgements.SCORES_JUDGEMENTS, arrayOf(ScoresJudgements.SCORES_JUDGEMENTS.SCORE_ID), false)
|
val IDX_SCORES_JUDGEMENTS_SCORE_ID: Index = Internal.createIndex(DSL.name("idx_scores_judgements_score_id"), ScoresJudgements.SCORES_JUDGEMENTS, arrayOf(ScoresJudgements.SCORES_JUDGEMENTS.SCORE_ID), false)
|
||||||
|
val IDX_SCORES_KEYPRESSES_STANDARD_DEVIATION_ADJUSTED: Index = Internal.createIndex(DSL.name("idx_scores_keypresses_standard_deviation_adjusted"), Scores.SCORES, arrayOf(Scores.SCORES.KEYPRESSES_STANDARD_DEVIATION_ADJUSTED), false)
|
||||||
|
val IDX_SCORES_PP: Index = Internal.createIndex(DSL.name("idx_scores_pp"), Scores.SCORES, arrayOf(Scores.SCORES.PP), false)
|
||||||
val IDX_SCORES_REPLAY_ID: Index = Internal.createIndex(DSL.name("idx_scores_replay_id"), Scores.SCORES, arrayOf(Scores.SCORES.REPLAY_ID), false)
|
val IDX_SCORES_REPLAY_ID: Index = Internal.createIndex(DSL.name("idx_scores_replay_id"), Scores.SCORES, arrayOf(Scores.SCORES.REPLAY_ID), false)
|
||||||
|
val IDX_SCORES_SLIDEREND_RELEASE_STANDARD_DEVIATION_ADJUSTED: Index = Internal.createIndex(DSL.name("idx_scores_sliderend_release_standard_deviation_adjusted"), Scores.SCORES, arrayOf(Scores.SCORES.SLIDEREND_RELEASE_STANDARD_DEVIATION_ADJUSTED), false)
|
||||||
val IDX_SCORES_UR: Index = Internal.createIndex(DSL.name("idx_scores_ur"), Scores.SCORES, arrayOf(Scores.SCORES.UR), false)
|
val IDX_SCORES_UR: Index = Internal.createIndex(DSL.name("idx_scores_ur"), Scores.SCORES, arrayOf(Scores.SCORES.UR), false)
|
||||||
val IDX_SCORES_USER_ID: Index = Internal.createIndex(DSL.name("idx_scores_user_id"), Scores.SCORES, arrayOf(Scores.SCORES.USER_ID), false)
|
val IDX_SCORES_USER_ID: Index = Internal.createIndex(DSL.name("idx_scores_user_id"), Scores.SCORES, arrayOf(Scores.SCORES.USER_ID), false)
|
||||||
val IDX_USERS_IS_BANNED_FALSE: Index = Internal.createIndex(DSL.name("idx_users_is_banned_false"), Users.USERS, arrayOf(Users.USERS.IS_BANNED), false)
|
val IDX_USERS_IS_BANNED_FALSE: Index = Internal.createIndex(DSL.name("idx_users_is_banned_false"), Users.USERS, arrayOf(Users.USERS.IS_BANNED), false)
|
||||||
|
|||||||
@ -8,7 +8,11 @@ import com.nisemoe.generated.Public
|
|||||||
import com.nisemoe.generated.indexes.IDX_SCORES_BEATMAP_ID
|
import com.nisemoe.generated.indexes.IDX_SCORES_BEATMAP_ID
|
||||||
import com.nisemoe.generated.indexes.IDX_SCORES_BEATMAP_ID_REPLAY_ID
|
import com.nisemoe.generated.indexes.IDX_SCORES_BEATMAP_ID_REPLAY_ID
|
||||||
import com.nisemoe.generated.indexes.IDX_SCORES_BEATMAP_ID_REPLAY_ID_UR
|
import com.nisemoe.generated.indexes.IDX_SCORES_BEATMAP_ID_REPLAY_ID_UR
|
||||||
|
import com.nisemoe.generated.indexes.IDX_SCORES_IS_BANNED
|
||||||
|
import com.nisemoe.generated.indexes.IDX_SCORES_KEYPRESSES_STANDARD_DEVIATION_ADJUSTED
|
||||||
|
import com.nisemoe.generated.indexes.IDX_SCORES_PP
|
||||||
import com.nisemoe.generated.indexes.IDX_SCORES_REPLAY_ID
|
import com.nisemoe.generated.indexes.IDX_SCORES_REPLAY_ID
|
||||||
|
import com.nisemoe.generated.indexes.IDX_SCORES_SLIDEREND_RELEASE_STANDARD_DEVIATION_ADJUSTED
|
||||||
import com.nisemoe.generated.indexes.IDX_SCORES_UR
|
import com.nisemoe.generated.indexes.IDX_SCORES_UR
|
||||||
import com.nisemoe.generated.indexes.IDX_SCORES_USER_ID
|
import com.nisemoe.generated.indexes.IDX_SCORES_USER_ID
|
||||||
import com.nisemoe.generated.keys.REPLAY_ID_UNIQUE
|
import com.nisemoe.generated.keys.REPLAY_ID_UNIQUE
|
||||||
@ -317,6 +321,11 @@ open class Scores(
|
|||||||
*/
|
*/
|
||||||
val JUDGEMENTS: TableField<ScoresRecord, ByteArray?> = createField(DSL.name("judgements"), SQLDataType.BLOB, this, "")
|
val JUDGEMENTS: TableField<ScoresRecord, ByteArray?> = createField(DSL.name("judgements"), SQLDataType.BLOB, this, "")
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The column <code>public.scores.leaderboard_rank</code>.
|
||||||
|
*/
|
||||||
|
val LEADERBOARD_RANK: TableField<ScoresRecord, Long?> = createField(DSL.name("leaderboard_rank"), SQLDataType.BIGINT, this, "")
|
||||||
|
|
||||||
private constructor(alias: Name, aliased: Table<ScoresRecord>?): this(alias, null, null, null, aliased, null, null)
|
private constructor(alias: Name, aliased: Table<ScoresRecord>?): this(alias, null, null, null, aliased, null, null)
|
||||||
private constructor(alias: Name, aliased: Table<ScoresRecord>?, parameters: Array<Field<*>?>?): this(alias, null, null, null, aliased, parameters, null)
|
private constructor(alias: Name, aliased: Table<ScoresRecord>?, parameters: Array<Field<*>?>?): this(alias, null, null, null, aliased, parameters, null)
|
||||||
private constructor(alias: Name, aliased: Table<ScoresRecord>?, where: Condition?): this(alias, null, null, null, aliased, null, where)
|
private constructor(alias: Name, aliased: Table<ScoresRecord>?, where: Condition?): this(alias, null, null, null, aliased, null, where)
|
||||||
@ -349,7 +358,7 @@ open class Scores(
|
|||||||
override fun `as`(alias: Table<*>): ScoresPath = ScoresPath(alias.qualifiedName, this)
|
override fun `as`(alias: Table<*>): ScoresPath = ScoresPath(alias.qualifiedName, this)
|
||||||
}
|
}
|
||||||
override fun getSchema(): Schema? = if (aliased()) null else Public.PUBLIC
|
override fun getSchema(): Schema? = if (aliased()) null else Public.PUBLIC
|
||||||
override fun getIndexes(): List<Index> = listOf(IDX_SCORES_BEATMAP_ID, IDX_SCORES_BEATMAP_ID_REPLAY_ID, IDX_SCORES_BEATMAP_ID_REPLAY_ID_UR, IDX_SCORES_REPLAY_ID, IDX_SCORES_UR, IDX_SCORES_USER_ID)
|
override fun getIndexes(): List<Index> = listOf(IDX_SCORES_BEATMAP_ID, IDX_SCORES_BEATMAP_ID_REPLAY_ID, IDX_SCORES_BEATMAP_ID_REPLAY_ID_UR, IDX_SCORES_IS_BANNED, IDX_SCORES_KEYPRESSES_STANDARD_DEVIATION_ADJUSTED, IDX_SCORES_PP, IDX_SCORES_REPLAY_ID, IDX_SCORES_SLIDEREND_RELEASE_STANDARD_DEVIATION_ADJUSTED, IDX_SCORES_UR, IDX_SCORES_USER_ID)
|
||||||
override fun getPrimaryKey(): UniqueKey<ScoresRecord> = SCORES_PKEY
|
override fun getPrimaryKey(): UniqueKey<ScoresRecord> = SCORES_PKEY
|
||||||
override fun getUniqueKeys(): List<UniqueKey<ScoresRecord>> = listOf(REPLAY_ID_UNIQUE)
|
override fun getUniqueKeys(): List<UniqueKey<ScoresRecord>> = listOf(REPLAY_ID_UNIQUE)
|
||||||
|
|
||||||
|
|||||||
@ -205,6 +205,10 @@ open class ScoresRecord private constructor() : UpdatableRecordImpl<ScoresRecord
|
|||||||
set(value): Unit = set(45, value)
|
set(value): Unit = set(45, value)
|
||||||
get(): ByteArray? = get(45) as ByteArray?
|
get(): ByteArray? = get(45) as ByteArray?
|
||||||
|
|
||||||
|
open var leaderboardRank: Long?
|
||||||
|
set(value): Unit = set(46, value)
|
||||||
|
get(): Long? = get(46) as Long?
|
||||||
|
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
// Primary key information
|
// Primary key information
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
@ -214,7 +218,7 @@ open class ScoresRecord private constructor() : UpdatableRecordImpl<ScoresRecord
|
|||||||
/**
|
/**
|
||||||
* Create a detached, initialised ScoresRecord
|
* Create a detached, initialised ScoresRecord
|
||||||
*/
|
*/
|
||||||
constructor(id: Int? = null, beatmapId: Int? = null, count_100: Int? = null, count_300: Int? = null, count_50: Int? = null, countMiss: Int? = null, date: LocalDateTime? = null, maxCombo: Int? = null, mods: Int? = null, perfect: Boolean? = null, pp: Double? = null, rank: String? = null, replayAvailable: Boolean? = null, replayId: Long? = null, score: Long? = null, userId: Long? = null, replay: ByteArray? = null, ur: Double? = null, frametime: Double? = null, edgeHits: Int? = null, snaps: Int? = null, isBanned: Boolean? = null, adjustedUr: Double? = null, meanError: Double? = null, errorVariance: Double? = null, errorStandardDeviation: Double? = null, minimumError: Double? = null, maximumError: Double? = null, errorRange: Double? = null, errorCoefficientOfVariation: Double? = null, errorKurtosis: Double? = null, errorSkewness: Double? = null, sentDiscordNotification: Boolean? = null, addedAt: OffsetDateTime? = null, version: Int? = null, keypressesTimes: Array<Double?>? = null, keypressesMedian: Double? = null, keypressesStandardDeviation: Double? = null, sliderendReleaseTimes: Array<Double?>? = null, sliderendReleaseMedian: Double? = null, sliderendReleaseStandardDeviation: Double? = null, keypressesMedianAdjusted: Double? = null, keypressesStandardDeviationAdjusted: Double? = null, sliderendReleaseMedianAdjusted: Double? = null, sliderendReleaseStandardDeviationAdjusted: Double? = null, judgements: ByteArray? = null): this() {
|
constructor(id: Int? = null, beatmapId: Int? = null, count_100: Int? = null, count_300: Int? = null, count_50: Int? = null, countMiss: Int? = null, date: LocalDateTime? = null, maxCombo: Int? = null, mods: Int? = null, perfect: Boolean? = null, pp: Double? = null, rank: String? = null, replayAvailable: Boolean? = null, replayId: Long? = null, score: Long? = null, userId: Long? = null, replay: ByteArray? = null, ur: Double? = null, frametime: Double? = null, edgeHits: Int? = null, snaps: Int? = null, isBanned: Boolean? = null, adjustedUr: Double? = null, meanError: Double? = null, errorVariance: Double? = null, errorStandardDeviation: Double? = null, minimumError: Double? = null, maximumError: Double? = null, errorRange: Double? = null, errorCoefficientOfVariation: Double? = null, errorKurtosis: Double? = null, errorSkewness: Double? = null, sentDiscordNotification: Boolean? = null, addedAt: OffsetDateTime? = null, version: Int? = null, keypressesTimes: Array<Double?>? = null, keypressesMedian: Double? = null, keypressesStandardDeviation: Double? = null, sliderendReleaseTimes: Array<Double?>? = null, sliderendReleaseMedian: Double? = null, sliderendReleaseStandardDeviation: Double? = null, keypressesMedianAdjusted: Double? = null, keypressesStandardDeviationAdjusted: Double? = null, sliderendReleaseMedianAdjusted: Double? = null, sliderendReleaseStandardDeviationAdjusted: Double? = null, judgements: ByteArray? = null, leaderboardRank: Long? = null): this() {
|
||||||
this.id = id
|
this.id = id
|
||||||
this.beatmapId = beatmapId
|
this.beatmapId = beatmapId
|
||||||
this.count_100 = count_100
|
this.count_100 = count_100
|
||||||
@ -261,6 +265,7 @@ open class ScoresRecord private constructor() : UpdatableRecordImpl<ScoresRecord
|
|||||||
this.sliderendReleaseMedianAdjusted = sliderendReleaseMedianAdjusted
|
this.sliderendReleaseMedianAdjusted = sliderendReleaseMedianAdjusted
|
||||||
this.sliderendReleaseStandardDeviationAdjusted = sliderendReleaseStandardDeviationAdjusted
|
this.sliderendReleaseStandardDeviationAdjusted = sliderendReleaseStandardDeviationAdjusted
|
||||||
this.judgements = judgements
|
this.judgements = judgements
|
||||||
|
this.leaderboardRank = leaderboardRank
|
||||||
resetChangedOnNotNull()
|
resetChangedOnNotNull()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -242,6 +242,22 @@ class OsuApi(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getUserBeatmapScore(userId: Long, beatmapId: Int, scoreId: Long? = null): OsuApiModels.UserScore? {
|
||||||
|
val response = doRequest("https://osu.ppy.sh/api/v2/beatmaps/$beatmapId/scores/users/$userId", emptyMap())
|
||||||
|
|
||||||
|
if (response == null) {
|
||||||
|
this.logger.info("Error getting score on beatmap $beatmapId for user $userId")
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
val score = when (response.statusCode()) {
|
||||||
|
200 -> serializer.decodeFromString<OsuApiModels.UserScore>(response.body())
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
|
||||||
|
return if (scoreId == null || score?.score?.id == scoreId) score else null
|
||||||
|
}
|
||||||
|
|
||||||
fun searchBeatmapsets(cursor: OsuApiModels.BeatmapsetSearchResultCursor?): OsuApiModels.BeatmapsetSearchResult? {
|
fun searchBeatmapsets(cursor: OsuApiModels.BeatmapsetSearchResultCursor?): OsuApiModels.BeatmapsetSearchResult? {
|
||||||
val queryParams = mutableMapOf(
|
val queryParams = mutableMapOf(
|
||||||
"s" to "ranked", // Status [only ranked]
|
"s" to "ranked", // Status [only ranked]
|
||||||
|
|||||||
@ -140,6 +140,12 @@ class OsuApiModels {
|
|||||||
val scores: List<Score>
|
val scores: List<Score>
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class UserScore(
|
||||||
|
val score: Score,
|
||||||
|
val position: Long,
|
||||||
|
)
|
||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
enum class Grade {
|
enum class Grade {
|
||||||
@SerialName("XH")
|
@SerialName("XH")
|
||||||
|
|||||||
@ -727,6 +727,8 @@ class ImportScores(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val topScore = osuApi.getUserBeatmapScore(score.user_id, beatmapId, score.best_id)
|
||||||
|
|
||||||
dslContext.insertInto(SCORES)
|
dslContext.insertInto(SCORES)
|
||||||
.set(SCORES.BEATMAP_ID, beatmapId)
|
.set(SCORES.BEATMAP_ID, beatmapId)
|
||||||
.set(SCORES.COUNT_300, score.statistics.count_300)
|
.set(SCORES.COUNT_300, score.statistics.count_300)
|
||||||
@ -745,6 +747,7 @@ class ImportScores(
|
|||||||
.set(SCORES.REPLAY_ID, score.best_id)
|
.set(SCORES.REPLAY_ID, score.best_id)
|
||||||
.set(SCORES.USER_ID, score.user_id)
|
.set(SCORES.USER_ID, score.user_id)
|
||||||
.set(SCORES.VERSION, CURRENT_VERSION)
|
.set(SCORES.VERSION, CURRENT_VERSION)
|
||||||
|
.set(SCORES.LEADERBOARD_RANK, topScore?.position)
|
||||||
.execute()
|
.execute()
|
||||||
|
|
||||||
this.statistics.scoresAddedToDatabase++
|
this.statistics.scoresAddedToDatabase++
|
||||||
|
|||||||
@ -0,0 +1 @@
|
|||||||
|
ALTER TABLE public.scores ADD COLUMN leaderboard_rank BIGINT;
|
||||||
Loading…
Reference in New Issue
Block a user