From 97198533025132386726ce333544310a89bd2750 Mon Sep 17 00:00:00 2001 From: Stedoss <29103029+Stedoss@users.noreply.github.com> Date: Fri, 5 Jul 2024 00:20:56 +0100 Subject: [PATCH] Allow `getUserDetails()` to lookup on `userId` when user not found by username query --- .../com/nisemoe/nise/database/UserService.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) 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