debug on loading (3x)

This commit is contained in:
dalbodeule
2024-08-28 21:20:43 +09:00
parent 5226c5b60d
commit ae850b93d0
6 changed files with 48 additions and 28 deletions

View File

@@ -1,7 +1,6 @@
package space.mori.chzzk_bot.common.services package space.mori.chzzk_bot.common.services
import org.jetbrains.exposed.dao.load import org.jetbrains.exposed.dao.load
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
import org.jetbrains.exposed.sql.transactions.transaction import org.jetbrains.exposed.sql.transactions.transaction
import space.mori.chzzk_bot.common.models.User import space.mori.chzzk_bot.common.models.User
import space.mori.chzzk_bot.common.models.Users import space.mori.chzzk_bot.common.models.Users
@@ -35,7 +34,7 @@ object UserService {
fun getUser(id: Int): User? { fun getUser(id: Int): User? {
return transaction { return transaction {
val user = User.findById(id) val user = User.find{ Users.id eq id }.firstOrNull()
user?.load(User::subordinates, User::managers) user?.load(User::subordinates, User::managers)
user user
} }
@@ -43,9 +42,7 @@ object UserService {
fun getUser(discordID: Long): User? { fun getUser(discordID: Long): User? {
return transaction { return transaction {
val users = User.find(Users.discord eq discordID) val user = User.find{ Users.discord eq discordID }.firstOrNull()
val user = users.firstOrNull()
user?.load(User::subordinates, User::managers) user?.load(User::subordinates, User::managers)
user user
} }
@@ -53,9 +50,7 @@ object UserService {
fun getUser(chzzkID: String): User? { fun getUser(chzzkID: String): User? {
return transaction { return transaction {
val users = User.find(Users.token eq chzzkID) val user = User.find{ Users.token eq chzzkID }.firstOrNull()
val user = users.firstOrNull()
user?.load(User::subordinates, User::managers) user?.load(User::subordinates, User::managers)
user user
} }
@@ -63,9 +58,7 @@ object UserService {
fun getUserWithGuildId(discordGuildId: Long): User? { fun getUserWithGuildId(discordGuildId: Long): User? {
return transaction { return transaction {
val users = User.find(Users.liveAlertGuild eq discordGuildId) val user = User.find { Users.liveAlertGuild eq discordGuildId }.firstOrNull()
val user = users.firstOrNull()
user?.load(User::subordinates, User::managers) user?.load(User::subordinates, User::managers)
user user
} }
@@ -73,9 +66,7 @@ object UserService {
fun getUserWithNaverId(naverId: String): User? { fun getUserWithNaverId(naverId: String): User? {
return transaction { return transaction {
val users = User.find(Users.naverId eq naverId) val user = User.find{ Users.naverId eq naverId }.firstOrNull()
val user = users.firstOrNull()
user?.load(User::subordinates, User::managers) user?.load(User::subordinates, User::managers)
user user
} }

View File

@@ -10,6 +10,7 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import org.jetbrains.exposed.sql.transactions.transaction
import org.koin.java.KoinJavaComponent.inject import org.koin.java.KoinJavaComponent.inject
import space.mori.chzzk_bot.common.events.CommandReloadEvent import space.mori.chzzk_bot.common.events.CommandReloadEvent
import space.mori.chzzk_bot.common.events.CoroutinesEventBus import space.mori.chzzk_bot.common.events.CoroutinesEventBus
@@ -54,7 +55,10 @@ fun Routing.apiCommandRoutes() {
return@put return@put
} }
if(!user.managers.any { it.naverId == session?.id } && user.naverId != session?.id) { val managers = transaction {
user.managers
}
if(!managers.any { it.naverId == session?.id } && user.naverId != session?.id) {
call.respond(HttpStatusCode.BadRequest, "User does not exist") call.respond(HttpStatusCode.BadRequest, "User does not exist")
return@put return@put
} }
@@ -84,7 +88,10 @@ fun Routing.apiCommandRoutes() {
return@post return@post
} }
if(!user.managers.any { it.naverId == session?.id } && user.naverId != session?.id) { val managers = transaction {
user.managers
}
if(!managers.any { it.naverId == session?.id } && user.naverId != session?.id) {
call.respond(HttpStatusCode.BadRequest, "User does not exist") call.respond(HttpStatusCode.BadRequest, "User does not exist")
return@post return@post
} }
@@ -119,7 +126,10 @@ fun Routing.apiCommandRoutes() {
return@delete return@delete
} }
if(!user.managers?.any { it.naverId == session?.id }!! ?: true && user.naverId != session?.id) { val managers = transaction {
user.managers
}
if(!managers.any { it.naverId == session?.id } && user.naverId != session?.id) {
call.respond(HttpStatusCode.BadRequest, "User does not exist") call.respond(HttpStatusCode.BadRequest, "User does not exist")
return@delete return@delete
} }

View File

@@ -7,6 +7,7 @@ import io.ktor.server.response.*
import io.ktor.server.routing.* import io.ktor.server.routing.*
import io.ktor.server.sessions.* import io.ktor.server.sessions.*
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import org.jetbrains.exposed.sql.transactions.transaction
import org.koin.java.KoinJavaComponent.inject import org.koin.java.KoinJavaComponent.inject
import space.mori.chzzk_bot.common.events.CoroutinesEventBus import space.mori.chzzk_bot.common.events.CoroutinesEventBus
import space.mori.chzzk_bot.common.services.UserService import space.mori.chzzk_bot.common.services.UserService
@@ -29,7 +30,11 @@ fun Route.apiDiscordRoutes() {
call.respond(HttpStatusCode.BadRequest, "User does not exist") call.respond(HttpStatusCode.BadRequest, "User does not exist")
return@get return@get
} }
if(!user.managers?.any { it.naverId == session?.id }!! ?: true && user.naverId != session?.id) {
val managers = transaction {
user.managers
}
if(!managers.any { it.naverId == session?.id } && user.naverId != session?.id) {
call.respond(HttpStatusCode.BadRequest, "User does not exist") call.respond(HttpStatusCode.BadRequest, "User does not exist")
return@get return@get
} }
@@ -58,7 +63,11 @@ fun Route.apiDiscordRoutes() {
call.respond(HttpStatusCode.BadRequest, "User does not exist") call.respond(HttpStatusCode.BadRequest, "User does not exist")
return@post return@post
} }
if(!user.managers?.any { it.naverId == session?.id }!! ?: true && user.naverId != session?.id) {
val managers = transaction {
user.managers
}
if(!managers.any { it.naverId == session?.id } && user.naverId != session?.id) {
call.respond(HttpStatusCode.BadRequest, "User does not exist") call.respond(HttpStatusCode.BadRequest, "User does not exist")
return@post return@post
} }

View File

@@ -10,6 +10,7 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import org.jetbrains.exposed.sql.transactions.transaction
import org.koin.java.KoinJavaComponent.inject import org.koin.java.KoinJavaComponent.inject
import space.mori.chzzk_bot.common.events.CoroutinesEventBus import space.mori.chzzk_bot.common.events.CoroutinesEventBus
import space.mori.chzzk_bot.common.events.UserRegisterEvent import space.mori.chzzk_bot.common.events.UserRegisterEvent
@@ -18,7 +19,7 @@ import space.mori.chzzk_bot.common.services.UserService
import space.mori.chzzk_bot.common.utils.getStreamInfo import space.mori.chzzk_bot.common.utils.getStreamInfo
import space.mori.chzzk_bot.common.utils.getUserInfo import space.mori.chzzk_bot.common.utils.getUserInfo
import space.mori.chzzk_bot.webserver.UserSession import space.mori.chzzk_bot.webserver.UserSession
import space.mori.chzzk_bot.webserver.utils.ChzzkUsercache import space.mori.chzzk_bot.webserver.utils.ChzzkUserCache
@Serializable @Serializable
data class GetUserDTO( data class GetUserDTO(
@@ -68,8 +69,8 @@ fun Routing.apiRoutes() {
call.respondText("Require UID", status = HttpStatusCode.NotFound) call.respondText("Require UID", status = HttpStatusCode.NotFound)
return@get return@get
} }
val user = getStreamInfo(uid) val user = ChzzkUserCache.getCachedUser(uid)
if(user.content == null) { if(user?.content == null) {
call.respondText("User not found", status = HttpStatusCode.NotFound) call.respondText("User not found", status = HttpStatusCode.NotFound)
return@get return@get
} else { } else {
@@ -117,10 +118,12 @@ fun Routing.apiRoutes() {
songConfig.streamerOnly, songConfig.streamerOnly,
songConfig.disabled songConfig.disabled
)) ))
val subordinates = user.subordinates
println(subordinates) val subordinates = transaction {
user.subordinates
}
returnUsers.addAll(subordinates.map { returnUsers.addAll(subordinates.map {
val subStatus = it.token?.let { token -> ChzzkUsercache.getCachedUser(token) } val subStatus = it.token?.let { token -> ChzzkUserCache.getCachedUser(token) }
return@map if (it.token == null || subStatus?.content == null) { return@map if (it.token == null || subStatus?.content == null) {
null null
} else { } else {

View File

@@ -7,6 +7,7 @@ import io.ktor.server.response.*
import io.ktor.server.routing.* import io.ktor.server.routing.*
import io.ktor.server.sessions.* import io.ktor.server.sessions.*
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import org.jetbrains.exposed.sql.transactions.transaction
import space.mori.chzzk_bot.common.events.TimerType import space.mori.chzzk_bot.common.events.TimerType
import space.mori.chzzk_bot.common.services.TimerConfigService import space.mori.chzzk_bot.common.services.TimerConfigService
import space.mori.chzzk_bot.common.services.UserService import space.mori.chzzk_bot.common.services.UserService
@@ -27,7 +28,10 @@ fun Routing.apiTimerRoutes() {
return@get return@get
} }
if(!user.managers.any { it.naverId == session?.id } && user.naverId != session?.id) { val managers = transaction {
user.managers
}
if(!managers.any { it.naverId == session?.id } && user.naverId != session?.id) {
call.respond(HttpStatusCode.BadRequest, "User does not exist") call.respond(HttpStatusCode.BadRequest, "User does not exist")
return@get return@get
} }
@@ -51,7 +55,10 @@ fun Routing.apiTimerRoutes() {
return@put return@put
} }
if(!user.managers.any { it.naverId == session?.id } && user.naverId != session?.id) { val managers = transaction {
user.managers
}
if(!managers.any { it.naverId == session?.id } && user.naverId != session?.id) {
call.respond(HttpStatusCode.BadRequest, "User does not exist") call.respond(HttpStatusCode.BadRequest, "User does not exist")
return@put return@put
} }

View File

@@ -9,7 +9,7 @@ import space.mori.chzzk_bot.common.utils.getStreamInfo
import java.time.Instant import java.time.Instant
import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentHashMap
object ChzzkUsercache { object ChzzkUserCache {
private val cache = ConcurrentHashMap<String, CachedUser>() private val cache = ConcurrentHashMap<String, CachedUser>()
private const val EXP_SECONDS = 600L private const val EXP_SECONDS = 600L
private val mutex = Mutex() private val mutex = Mutex()