Check if an user_id exists before inserting into user queue
This commit is contained in:
parent
1928eb07cf
commit
1f09cbd009
@ -2,22 +2,15 @@ package com.nisemoe.nise.controller
|
|||||||
|
|
||||||
import com.nisemoe.generated.tables.references.SCORES
|
import com.nisemoe.generated.tables.references.SCORES
|
||||||
import com.nisemoe.nise.SimilarReplayEntry
|
import com.nisemoe.nise.SimilarReplayEntry
|
||||||
import com.nisemoe.nise.database.ScoreService
|
|
||||||
import com.nisemoe.nise.SuspiciousScoreEntry
|
import com.nisemoe.nise.SuspiciousScoreEntry
|
||||||
import com.nisemoe.nise.UserDetails
|
import com.nisemoe.nise.UserDetails
|
||||||
import com.nisemoe.nise.UserQueueDetails
|
import com.nisemoe.nise.UserQueueDetails
|
||||||
|
import com.nisemoe.nise.database.ScoreService
|
||||||
import com.nisemoe.nise.database.UserService
|
import com.nisemoe.nise.database.UserService
|
||||||
import com.nisemoe.nise.service.AuthService
|
import com.nisemoe.nise.service.AuthService
|
||||||
import com.nisemoe.nise.service.UpdateUserQueueService
|
import com.nisemoe.nise.service.UpdateUserQueueService
|
||||||
import org.springframework.http.ResponseEntity
|
import org.springframework.http.ResponseEntity
|
||||||
import org.springframework.web.bind.annotation.GetMapping
|
import org.springframework.web.bind.annotation.*
|
||||||
import org.springframework.web.bind.annotation.PathVariable
|
|
||||||
import org.springframework.web.bind.annotation.PostMapping
|
|
||||||
import org.springframework.web.bind.annotation.RequestBody
|
|
||||||
import org.springframework.web.bind.annotation.RestController
|
|
||||||
import java.time.LocalDateTime
|
|
||||||
import java.time.OffsetDateTime
|
|
||||||
import java.time.ZoneOffset
|
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
class UserDetailsController(
|
class UserDetailsController(
|
||||||
@ -41,6 +34,10 @@ class UserDetailsController(
|
|||||||
|
|
||||||
@PostMapping("user-queue")
|
@PostMapping("user-queue")
|
||||||
fun addUserToQueue(@RequestBody request: UserQueueRequest): ResponseEntity<Unit> {
|
fun addUserToQueue(@RequestBody request: UserQueueRequest): ResponseEntity<Unit> {
|
||||||
|
// Check if the user_id currently exists
|
||||||
|
this.userService.getUserById(userId = request.userId)
|
||||||
|
?: return ResponseEntity.notFound().build()
|
||||||
|
|
||||||
val userQueueDetails = this.userQueueService.getUserQueueDetails(request.userId)
|
val userQueueDetails = this.userQueueService.getUserQueueDetails(request.userId)
|
||||||
if(!userQueueDetails.canUpdate)
|
if(!userQueueDetails.canUpdate)
|
||||||
return ResponseEntity.badRequest().build()
|
return ResponseEntity.badRequest().build()
|
||||||
|
|||||||
@ -45,6 +45,35 @@ class UserService(
|
|||||||
return dslContext.fetchCount(SCORES, SCORES.USER_ID.eq(userId))
|
return dslContext.fetchCount(SCORES, SCORES.USER_ID.eq(userId))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getUserById(userId: Long): UserDetails? {
|
||||||
|
val user = dslContext.selectFrom(USERS)
|
||||||
|
.where(USERS.USER_ID.eq(userId))
|
||||||
|
.fetchOneInto(UsersRecord::class.java)
|
||||||
|
|
||||||
|
if (user != null) {
|
||||||
|
return UserDetails(
|
||||||
|
user.userId!!,
|
||||||
|
user.username!!,
|
||||||
|
user.rank,
|
||||||
|
user.ppRaw,
|
||||||
|
user.joinDate?.let { Format.formatLocalDateTime(it) },
|
||||||
|
user.secondsPlayed,
|
||||||
|
user.country,
|
||||||
|
user.countryRank,
|
||||||
|
user.playcount
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// The database does NOT have the user; we will now use the osu!api
|
||||||
|
val apiUser = this.osuApi.getUserProfile(userId = userId.toString(), mode = "osu", key = "id")
|
||||||
|
?: return null
|
||||||
|
|
||||||
|
// Persist to database
|
||||||
|
insertApiUser(apiUser)
|
||||||
|
|
||||||
|
return this.mapUserToDatabase(apiUser)
|
||||||
|
}
|
||||||
|
|
||||||
fun getUserDetails(username: String): UserDetails? {
|
fun getUserDetails(username: String): UserDetails? {
|
||||||
val user = dslContext.selectFrom(USERS)
|
val user = dslContext.selectFrom(USERS)
|
||||||
.where(USERS.USERNAME.equalIgnoreCase(username.lowercase()))
|
.where(USERS.USERNAME.equalIgnoreCase(username.lowercase()))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user