mirror of
https://github.com/MewoLab/AquaDX.git
synced 2025-10-25 20:12:39 +00:00
add mai2 fields
This commit is contained in:
parent
ac6cbb9dd3
commit
11dbe849cf
@ -84,13 +84,11 @@ abstract class ImportController<ExportModel: IExportClass<UserModel>, UserModel:
|
||||
gameId = game
|
||||
userData = userDataRepo.findByCard(u.ghostCard) ?: (404 - "User not found")
|
||||
exportRepos.forEach { (f, u) ->
|
||||
val customExporter = customExporters[f]
|
||||
if (customExporter != null) {
|
||||
customExporter(userData, options)?.let { f.set(this, it) }
|
||||
} else {
|
||||
if (f returns List::class) f.set(this, u.findByUser(userData))
|
||||
else u.findSingleByUser(userData)()?.let { f.set(this, it) }
|
||||
}
|
||||
if (f returns List::class) f.set(this, u.findByUser(userData))
|
||||
else u.findSingleByUser(userData)()?.let { f.set(this, it) }
|
||||
}
|
||||
customExporters.forEach { (f, exporter) ->
|
||||
exporter(userData, options)?.let { f.set(this, it) }
|
||||
}
|
||||
}
|
||||
|
||||
@ -106,8 +104,9 @@ abstract class ImportController<ExportModel: IExportClass<UserModel>, UserModel:
|
||||
val export = json.parseJackson(exportClass.java)
|
||||
if (!export.gameId.equals(game, true)) 400 - "Invalid game ID"
|
||||
|
||||
val lists = listRepos.toList().filter { (f, _) -> f !in customImporters }.associate { (f, r) -> r to f.get(export) as List<IUserEntity<UserModel>> }.vNotNull()
|
||||
val singles = singleRepos.toList().filter { (f, _) -> f !in customImporters }.associate { (f, r) -> r to f.get(export) as IUserEntity<UserModel> }.vNotNull()
|
||||
val lists = listRepos.toList().associate { (f, r) -> r to f.get(export) as List<IUserEntity<UserModel>> }.vNotNull()
|
||||
val singles = singleRepos.toList().associate { (f, r) -> r to f.get(export) as IUserEntity<UserModel> }.vNotNull()
|
||||
var repoFieldMap = exportRepos.toList().associate { (f, r) -> r to f }
|
||||
|
||||
// Validate new user data
|
||||
// Check that all ids are 0 (this should be true since all ids are @JsonIgnore)
|
||||
|
||||
@ -24,7 +24,7 @@ class Mai2Import(
|
||||
it.name.replace("List", "").lowercase()
|
||||
},
|
||||
exportRepos = Maimai2DataExport::class.vars()
|
||||
.filter { f -> f.name !in setOf("gameId", "userData") }
|
||||
.filter { f -> f.name !in setOf("gameId", "userData", "userPlaylogList", "userFavoriteMusicList") }
|
||||
.associateWith { field ->
|
||||
val repoName = when (field.name) {
|
||||
"userKaleidxScopeList" -> "userKaleidx"
|
||||
@ -70,14 +70,18 @@ class Mai2Import(
|
||||
}
|
||||
) as Map<kotlin.reflect.KMutableProperty1<Maimai2DataExport, Any>, (Mai2UserDetail, ExportOptions) -> Any?>,
|
||||
customImporters = mapOf(
|
||||
Maimai2DataExport::userPlaylogList to { export: Maimai2DataExport, user: Mai2UserDetail ->
|
||||
repos.userPlaylog.saveAll(export.userPlaylogList.map { it.apply { it.user = user } })
|
||||
},
|
||||
Maimai2DataExport::userFavoriteMusicList to { export: Maimai2DataExport, user: Mai2UserDetail ->
|
||||
val favoriteMusicList = export.userFavoriteMusicList
|
||||
if (favoriteMusicList.isNotEmpty()) {
|
||||
val key = "favorite_music"
|
||||
// This field always imports as incremental, since the userGeneralData field (for backwards compatibility) is processed before this
|
||||
val data = repos.userGeneralData.findByUserAndPropertyKey(user, key).orElse(null)
|
||||
?: Mai2UserGeneralData().apply { this.user = user; propertyKey = key }
|
||||
repos.userGeneralData.save(data.apply {
|
||||
propertyValue = favoriteMusicList.map { it.id }.joinToString(",")
|
||||
propertyValue = favoriteMusicList.sortedBy { it.orderId }.map { it.id }.joinToString(",")
|
||||
})
|
||||
}
|
||||
}
|
||||
@ -88,30 +92,25 @@ class Mai2Import(
|
||||
}
|
||||
|
||||
data class Maimai2DataExport(
|
||||
override var userData: Mai2UserDetail,
|
||||
var userExtend: Mai2UserExtend,
|
||||
var userOption: Mai2UserOption,
|
||||
var userUdemae: Mai2UserUdemae,
|
||||
var mapEncountNpcList: List<Mai2MapEncountNpc>,
|
||||
var userActList: List<Mai2UserAct>,
|
||||
var userCharacterList: List<Mai2UserCharacter>,
|
||||
var userChargeList: List<Mai2UserCharge>,
|
||||
var userCourseList: List<Mai2UserCourse>,
|
||||
var userFavoriteList: List<Mai2UserFavorite>,
|
||||
var userFriendSeasonRankingList: List<Mai2UserFriendSeasonRanking>,
|
||||
var userGeneralDataList: List<Mai2UserGeneralData>,
|
||||
var userItemList: List<Mai2UserItem>,
|
||||
var userLoginBonusList: List<Mai2UserLoginBonus>,
|
||||
var userMapList: List<Mai2UserMap>,
|
||||
var userMusicDetailList: List<Mai2UserMusicDetail>,
|
||||
var userIntimateList: List<Mai2UserIntimate>,
|
||||
var userFavoriteMusicList: List<Mai2UserFavoriteItem>,
|
||||
var userKaleidxScopeList: List<Mai2UserKaleidx>,
|
||||
var userPlaylogList: List<Mai2UserPlaylog>,
|
||||
override var userData: Mai2UserDetail = Mai2UserDetail(),
|
||||
var userExtend: Mai2UserExtend = Mai2UserExtend(),
|
||||
var userOption: Mai2UserOption = Mai2UserOption(),
|
||||
var userUdemae: Mai2UserUdemae = Mai2UserUdemae(),
|
||||
var mapEncountNpcList: List<Mai2MapEncountNpc> = mutableListOf(),
|
||||
var userActList: List<Mai2UserAct> = mutableListOf(),
|
||||
var userCharacterList: List<Mai2UserCharacter> = mutableListOf(),
|
||||
var userChargeList: List<Mai2UserCharge> = mutableListOf(),
|
||||
var userCourseList: List<Mai2UserCourse> = mutableListOf(),
|
||||
var userFavoriteList: List<Mai2UserFavorite> = mutableListOf(),
|
||||
var userFriendSeasonRankingList: List<Mai2UserFriendSeasonRanking> = mutableListOf(),
|
||||
var userGeneralDataList: List<Mai2UserGeneralData> = mutableListOf(),
|
||||
var userItemList: List<Mai2UserItem> = mutableListOf(),
|
||||
var userLoginBonusList: List<Mai2UserLoginBonus> = mutableListOf(),
|
||||
var userMapList: List<Mai2UserMap> = mutableListOf(),
|
||||
var userMusicDetailList: List<Mai2UserMusicDetail> = mutableListOf(),
|
||||
var userIntimateList: List<Mai2UserIntimate> = mutableListOf(),
|
||||
var userFavoriteMusicList: List<Mai2UserFavoriteItem> = mutableListOf(),
|
||||
var userKaleidxScopeList: List<Mai2UserKaleidx> = mutableListOf(),
|
||||
var userPlaylogList: List<Mai2UserPlaylog> = mutableListOf(),
|
||||
override var gameId: String = "SDEZ",
|
||||
): IExportClass<Mai2UserDetail> {
|
||||
constructor() : this(Mai2UserDetail(), Mai2UserExtend(), Mai2UserOption(), Mai2UserUdemae(),
|
||||
mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(),
|
||||
mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf(),
|
||||
mutableListOf(), mutableListOf(), mutableListOf(), mutableListOf())
|
||||
}
|
||||
): IExportClass<Mai2UserDetail>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user