mirror of
https://github.com/hykilpikonna/AquaDX.git
synced 2026-08-23 09:44:35 -05:00
feat: [ongeki] data export/import
This commit is contained in:
@@ -2,8 +2,20 @@
|
||||
import { fade } from "svelte/transition";
|
||||
import { FADE_IN, FADE_OUT } from "../../libs/config";
|
||||
import GameSettingFields from "./GameSettingFields.svelte";
|
||||
|
||||
function exportData() {
|
||||
submitting = "export"
|
||||
GAME.export('ongeki')
|
||||
.then(data => download(JSON.stringify(data), `AquaDX_ongeki_export_${values[0]}.json`))
|
||||
.catch(e => error = e.message)
|
||||
.finally(() => submitting = "")
|
||||
}
|
||||
</script>
|
||||
|
||||
<div>
|
||||
<GameSettingFields game="ongeki"/>
|
||||
<button class="exportButton" on:click={exportData}>
|
||||
<Icon icon="bxs:file-export"/>
|
||||
{t('settings.export')}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -69,6 +69,8 @@
|
||||
return 'mai2';
|
||||
case 'SDHD':
|
||||
return 'chu3';
|
||||
case 'SDDT':
|
||||
return 'ongeki';
|
||||
default:
|
||||
throw new Error(t('home.import.unknown-game'));
|
||||
}
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
package icu.samnyan.aqua.net.games.ongeki
|
||||
|
||||
import ext.API
|
||||
import ext.returns
|
||||
import ext.vars
|
||||
import icu.samnyan.aqua.net.games.IExportClass
|
||||
import icu.samnyan.aqua.net.games.ImportClass
|
||||
import icu.samnyan.aqua.net.games.ImportController
|
||||
import icu.samnyan.aqua.sega.ongeki.model.*
|
||||
import icu.samnyan.aqua.sega.ongeki.OngekiRepos
|
||||
import icu.samnyan.aqua.sega.ongeki.OngekiUserLinked
|
||||
import icu.samnyan.aqua.sega.ongeki.OngekiUserRepos
|
||||
import org.springframework.web.bind.annotation.RestController
|
||||
import kotlin.reflect.full.declaredMembers
|
||||
|
||||
@RestController
|
||||
@API("api/v2/game/ongeki")
|
||||
class OngekiImport(
|
||||
val repos: OngekiRepos,
|
||||
) : ImportController<OngekiDataExport, UserData>(
|
||||
"SDDT", "ongeki", OngekiDataExport::class,
|
||||
exportFields = OngekiDataExport::class.vars().associateBy {
|
||||
it.name.replace("List", "").lowercase()
|
||||
},
|
||||
exportRepos = OngekiDataExport::class.vars()
|
||||
.filter { f -> f.name !in setOf("gameId", "userData") }
|
||||
.associateWith { OngekiUserRepos::class.declaredMembers
|
||||
.filter { f -> f returns OngekiUserLinked::class }
|
||||
.firstOrNull { f -> f.name == it.name || f.name == it.name.replace("List", "") }
|
||||
?.call(repos) as OngekiUserLinked<*>? ?: error("No matching field found for ${it.name}")
|
||||
},
|
||||
artemisRenames = mapOf() // TODO (almost nobody uses this so it's very low priority)
|
||||
) {
|
||||
override fun createEmpty() = OngekiDataExport()
|
||||
override val userDataRepo = repos.u.data
|
||||
}
|
||||
|
||||
|
||||
data class OngekiDataExport(
|
||||
override var gameId: String = "SDDT",
|
||||
override var userData: UserData,
|
||||
var userActivity: List<UserActivity>,
|
||||
var userBoss: List<UserBoss>,
|
||||
var userCard: List<UserCard>,
|
||||
var userChapter: List<UserChapter>,
|
||||
var userCharacter: List<UserCharacter>,
|
||||
var userDeck: List<UserDeck>,
|
||||
var userEventMusic: List<UserEventMusic>,
|
||||
var userEventPoint: List<UserEventPoint>,
|
||||
var userGeneralData: List<UserGeneralData>,
|
||||
var userItem: List<UserItem>,
|
||||
var userKop: List<UserKop>,
|
||||
var userLoginBonus: List<UserLoginBonus>,
|
||||
var userMemoryChapter: List<UserMemoryChapter>,
|
||||
var userMissionPoint: List<UserMissionPoint>,
|
||||
var userMusicDetail: List<UserMusicDetail>,
|
||||
var userMusicItem: List<UserMusicItem>,
|
||||
var userOption: UserOption,
|
||||
var userPlaylog: List<UserPlaylog>,
|
||||
var userRivalData: List<UserRival>,
|
||||
var userScenario: List<UserScenario>,
|
||||
var userStory: List<UserStory>,
|
||||
var userTechCount: List<UserTechCount>,
|
||||
var userTechEvent: List<UserTechEvent>,
|
||||
var userTradeItem: List<UserTradeItem>,
|
||||
var userTrainingRoom: List<UserTrainingRoom>,
|
||||
var userEventMap: List<UserEventMap>,
|
||||
var userSkin: List<UserSkin>,
|
||||
var userRegions: List<UserRegions>,
|
||||
var userGacha: List<UserGacha>,
|
||||
): IExportClass<UserData> {
|
||||
constructor() : this("SDDT", UserData(), ArrayList(), ArrayList(), ArrayList(), ArrayList(),ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList(),ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList(),ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList(),ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList(),ArrayList(), ArrayList(), ArrayList(), ArrayList(), ArrayList())
|
||||
}
|
||||
Reference in New Issue
Block a user