[F] Fix artemis conversion

This commit is contained in:
Azalea
2024-03-21 04:09:48 -04:00
parent 5fec57e8e3
commit e4330fee92
6 changed files with 63 additions and 62 deletions

View File

@@ -4,12 +4,11 @@ import com.fasterxml.jackson.core.JsonParser
import com.fasterxml.jackson.databind.DeserializationContext
import com.fasterxml.jackson.databind.JsonDeserializer
import com.fasterxml.jackson.databind.module.SimpleModule
import ext.API
import ext.JACKSON
import ext.minus
import ext.splitLines
import ext.*
import java.lang.reflect.Field
import kotlin.reflect.KClass
import kotlin.reflect.KMutableProperty1
import kotlin.reflect.KProperty1
// Import class with renaming
data class ImportClass<T : Any>(
@@ -19,7 +18,7 @@ data class ImportClass<T : Any>(
)
abstract class ImportController<T: Any>(
val exportFields: Map<String, Field>,
val exportFields: Map<String, KMutableProperty1<T, Any>>,
val renameTable: Map<String, ImportClass<*>>
) {
abstract fun createEmpty(): T
@@ -35,14 +34,14 @@ abstract class ImportController<T: Any>(
*/
@Suppress("UNCHECKED_CAST")
@API("convert-artemis")
fun importArtemisSql(sql: String): ImportResult {
fun importArtemisSql(@RB sql: String): ImportResult {
val data = createEmpty()
val errors = ArrayList<String>()
val warnings = ArrayList<String>()
fun err(msg: String) { errors.add(msg) }
fun warn(msg: String) { warnings.add(msg) }
val lists = exportFields.filter { it.value.type == List::class.java }
val lists = exportFields.filter { it.value returns List::class }
.mapValues { it.value.get(data) as ArrayList<Any> }
val statements = sql.splitLines().mapNotNull {

View File

@@ -1,6 +1,7 @@
package icu.samnyan.aqua.net.games.chu3
import ext.API
import ext.vars
import icu.samnyan.aqua.api.model.resp.sega.chuni.v2.external.Chu3DataExport
import icu.samnyan.aqua.net.games.ImportClass
import icu.samnyan.aqua.net.games.ImportController
@@ -10,7 +11,7 @@ import org.springframework.web.bind.annotation.RestController
@RestController
@API("api/v2/game/chu3")
class Chu3Import : ImportController<Chu3DataExport>(
exportFields = Chu3DataExport::class.java.declaredFields.associateBy {
exportFields = Chu3DataExport::class.vars().associateBy {
var name = it.name
if (name == "userMapList") name = "userMapAreaList"
name.replace("List", "").lowercase()
@@ -33,6 +34,5 @@ class Chu3Import : ImportController<Chu3DataExport>(
// "chuni_profile_recent_rating" to ImportClass(UserRecentRating::class),
)
) {
override fun createEmpty() = Chu3DataExport("SDEZ", UserData(), UserGameOption(), ArrayList(), ArrayList(),
ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList())
override fun createEmpty() = Chu3DataExport()
}

View File

@@ -1,6 +1,7 @@
package icu.samnyan.aqua.net.games.mai2
import ext.API
import ext.vars
import icu.samnyan.aqua.api.model.resp.sega.maimai2.external.Maimai2DataExport
import icu.samnyan.aqua.net.games.ImportClass
import icu.samnyan.aqua.net.games.ImportController
@@ -10,7 +11,7 @@ import org.springframework.web.bind.annotation.RestController
@RestController
@API("api/v2/game/mai2")
class Mai2Import : ImportController<Maimai2DataExport>(
exportFields = Maimai2DataExport::class.java.declaredFields.associateBy {
exportFields = Maimai2DataExport::class.vars().associateBy {
it.name.replace("List", "").lowercase()
},
renameTable = mapOf(