Allow getUserDetails() to lookup on userId when user not found by username query

This commit is contained in:
Stedoss 2024-07-05 00:20:56 +01:00
parent 735f3427c5
commit 9719853302

View File

@ -43,7 +43,7 @@ class UserService(
} }
fun getUserDetails(identifier: Any): UserDetailsExtended? { fun getUserDetails(identifier: Any): UserDetailsExtended? {
val user = when (identifier) { var user = when (identifier) {
is Long -> dslContext.selectFrom(USERS) is Long -> dslContext.selectFrom(USERS)
.where(USERS.USER_ID.eq(identifier)) .where(USERS.USER_ID.eq(identifier))
.fetchOneInto(UsersRecord::class.java) .fetchOneInto(UsersRecord::class.java)
@ -53,6 +53,16 @@ class UserService(
else -> null else -> null
} }
// Lookup user by ID if we have not found a user via a username lookup and the identifier is a valid number
if (user == null && identifier is String) {
val longIdentifier = identifier.toLongOrNull()
if (longIdentifier != null) {
user = dslContext.selectFrom(USERS)
.where(USERS.USER_ID.eq(longIdentifier))
.fetchOneInto(UsersRecord::class.java)
}
}
if (user != null) { if (user != null) {
val userDetails = UserDetails( val userDetails = UserDetails(
user.userId!!, user.userId!!,
@ -75,7 +85,7 @@ class UserService(
// The database does NOT have the user; we will now use the osu!api // The database does NOT have the user; we will now use the osu!api
val apiUser = when (identifier) { val apiUser = when (identifier) {
is Long -> this.osuApi.getUserProfile(userId = identifier.toString(), mode = "osu", key = "id") is Long -> this.osuApi.getUserProfile(userId = identifier.toString(), mode = "osu", key = "id")
is String -> this.osuApi.getUserProfile(userId = identifier, mode = "osu", key = "username") is String -> this.osuApi.getUserProfile(userId = identifier, mode = "osu")
else -> null else -> null
} ?: return null } ?: return null