diff --git a/nise-backend/src/main/kotlin/com/nisemoe/nise/database/UserService.kt b/nise-backend/src/main/kotlin/com/nisemoe/nise/database/UserService.kt index 823cc88..dbd2ca5 100644 --- a/nise-backend/src/main/kotlin/com/nisemoe/nise/database/UserService.kt +++ b/nise-backend/src/main/kotlin/com/nisemoe/nise/database/UserService.kt @@ -43,7 +43,7 @@ class UserService( } fun getUserDetails(identifier: Any): UserDetailsExtended? { - val user = when (identifier) { + var user = when (identifier) { is Long -> dslContext.selectFrom(USERS) .where(USERS.USER_ID.eq(identifier)) .fetchOneInto(UsersRecord::class.java) @@ -53,6 +53,16 @@ class UserService( 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) { val userDetails = UserDetails( user.userId!!, @@ -75,7 +85,7 @@ class UserService( // The database does NOT have the user; we will now use the osu!api val apiUser = when (identifier) { 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 } ?: return null