mirror of
https://github.com/MewoLab/AquaDX.git
synced 2025-10-26 04:22:38 +00:00
[F] Fix deleting data on import
This commit is contained in:
parent
91c605ee4b
commit
cc8c125934
@ -4,12 +4,14 @@ import ext.*
|
||||
import icu.samnyan.aqua.net.db.AquaUserServices
|
||||
import icu.samnyan.aqua.net.utils.SUCCESS
|
||||
import icu.samnyan.aqua.sega.general.model.Card
|
||||
import org.slf4j.LoggerFactory
|
||||
import kotlin.jvm.optionals.getOrNull
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
abstract class GameApiController<T : IGenericUserData>(name: String, userDataClass: KClass<T>) {
|
||||
val musicMapping = resJson<Map<String, GenericMusicMeta>>("/meta/$name/music.json")
|
||||
?.mapKeys { it.key.toInt() } ?: emptyMap()
|
||||
val logger = LoggerFactory.getLogger(javaClass)
|
||||
|
||||
val itemMapping = resJson<Map<String, Map<String, GenericItemMeta>>>("/meta/$name/items.json") ?: emptyMap()
|
||||
|
||||
|
||||
@ -102,18 +102,18 @@ class Maimai2(
|
||||
export.userData.card = u.ghostCard
|
||||
|
||||
// Check existing data
|
||||
val gu = repos.userData.findByCard(u.ghostCard)?.also { gu ->
|
||||
repos.userData.findByCard(u.ghostCard)?.also { gu ->
|
||||
// Store a backup of the old data
|
||||
val fl = "mai2-backup-${u.auId}-${LocalDateTime.now().urlSafeStr()}.json"
|
||||
(Path(netProps.importBackupPath) / fl).writeText(export(u).toJson())
|
||||
|
||||
// Delete the old data (After migration v1000.7, all user-linked entities have ON DELETE CASCADE)
|
||||
logger.info("Mai2 Import: Deleting old data for user ${u.auId}")
|
||||
repos.userData.delete(gu)
|
||||
repos.userData.flush()
|
||||
}
|
||||
|
||||
trans.execute {
|
||||
gu?.let {
|
||||
// Delete the old data (After migration v1000.7, all user-linked entities have ON DELETE CASCADE)
|
||||
repos.userData.deleteByCard(u.ghostCard)
|
||||
}
|
||||
|
||||
// Insert new data
|
||||
val nu = repos.userData.save(export.userData)
|
||||
// Set user fields
|
||||
|
||||
@ -9,6 +9,7 @@ import icu.samnyan.aqua.sega.maimai2.model.userdata.*
|
||||
import org.springframework.data.domain.Page
|
||||
import org.springframework.data.domain.Pageable
|
||||
import org.springframework.data.jpa.repository.JpaRepository
|
||||
import org.springframework.data.jpa.repository.Modifying
|
||||
import org.springframework.data.repository.NoRepositoryBean
|
||||
import org.springframework.stereotype.Component
|
||||
import org.springframework.transaction.annotation.Transactional
|
||||
@ -50,8 +51,9 @@ interface Mai2UserCourseRepo : UserLinked<Mai2UserCourse> {
|
||||
interface Mai2UserDataRepo : GenericUserDataRepo<Mai2UserDetail> {
|
||||
fun findByCardExtId(userId: Long): Optional<Mai2UserDetail>
|
||||
|
||||
@Modifying
|
||||
@Transactional
|
||||
fun deleteByCard(card: Card)
|
||||
fun deleteByCard(card: Card): Void
|
||||
}
|
||||
|
||||
interface Mai2UserExtendRepo : UserLinked<Mai2UserExtend>
|
||||
|
||||
@ -17,9 +17,9 @@ import lombok.NoArgsConstructor
|
||||
@MappedSuperclass
|
||||
open class Mai2UserEntity : BaseEntity() {
|
||||
@JsonIgnore
|
||||
@ManyToOne(cascade = [CascadeType.ALL])
|
||||
@ManyToOne
|
||||
@JoinColumn(name = "user_id")
|
||||
open var user: Mai2UserDetail? = null
|
||||
open var user: Mai2UserDetail = Mai2UserDetail()
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user