diff --git a/src/main/java/icu/samnyan/aqua/sega/wacca/Constants.kt b/src/main/java/icu/samnyan/aqua/sega/wacca/Constants.kt index 77526ed8..0d9dbf5d 100644 --- a/src/main/java/icu/samnyan/aqua/sega/wacca/Constants.kt +++ b/src/main/java/icu/samnyan/aqua/sega/wacca/Constants.kt @@ -46,7 +46,7 @@ enum class WaccaItemType(val type: Int) { TOUCH_EFFECT(17); operator fun invoke() = type - operator fun invoke(u: WaccaUser, id: Int) = WcUserItem(u, id, this) + operator fun invoke(u: WaccaUser, id: Int) = WcUserItem(id, this()).apply { user = u } } enum class WaccaOptionType(val id: Int, val default: Int) { diff --git a/src/main/java/icu/samnyan/aqua/sega/wacca/model/db/Repos.kt b/src/main/java/icu/samnyan/aqua/sega/wacca/model/db/Repos.kt index 91950f96..32f40bc2 100644 --- a/src/main/java/icu/samnyan/aqua/sega/wacca/model/db/Repos.kt +++ b/src/main/java/icu/samnyan/aqua/sega/wacca/model/db/Repos.kt @@ -23,9 +23,6 @@ interface WcUserFriendRepo : IWaccaUserLinked interface WcUserFavoriteSongRepo : IWaccaUserLinked interface WcUserGateRepo : IWaccaUserLinked interface WcUserItemRepo : IWaccaUserLinked -interface WcUserTicketRepo : IWaccaUserLinked -interface WcUserSongUnlockRepo : IWaccaUserLinked -interface WcUserTrophyRepo : IWaccaUserLinked interface WcUserBestScoreRepo : IWaccaUserLinked interface WcUserPlayLogRepo : IWaccaUserLinked interface WcUserStageUpRepo : IWaccaUserLinked @@ -39,9 +36,6 @@ class WaccaRepos( val favoriteSong: WcUserFavoriteSongRepo, val gate: WcUserGateRepo, val item: WcUserItemRepo, - val ticket: WcUserTicketRepo, - val songUnlock: WcUserSongUnlockRepo, - val trophy: WcUserTrophyRepo, val bestScore: WcUserBestScoreRepo, val playLog: WcUserPlayLogRepo, val stageUp: WcUserStageUpRepo diff --git a/src/main/java/icu/samnyan/aqua/sega/wacca/model/db/WaccaUserModels.kt b/src/main/java/icu/samnyan/aqua/sega/wacca/model/db/WaccaUserModels.kt index dc16e11f..1d9aa356 100644 --- a/src/main/java/icu/samnyan/aqua/sega/wacca/model/db/WaccaUserModels.kt +++ b/src/main/java/icu/samnyan/aqua/sega/wacca/model/db/WaccaUserModels.kt @@ -1,8 +1,10 @@ package icu.samnyan.aqua.sega.wacca.model.db import com.fasterxml.jackson.annotation.JsonIgnore +import ext.ls import icu.samnyan.aqua.net.games.BaseEntity import icu.samnyan.aqua.sega.wacca.WaccaItemType +import icu.samnyan.aqua.sega.wacca.WaccaItemType.* import jakarta.persistence.* typealias UC = UniqueConstraint @@ -38,7 +40,7 @@ class WcUserBingo : WaccaUserEntity() { */ @Entity @Table(name = "wacca_friend", uniqueConstraints = [UC("", ["user_id", "with"])]) class WcUserFriend : WaccaUserEntity() { - @ManyToOne @JoinColumn(name = "profile_reciever") + @ManyToOne @JoinColumn(name = "with") var with: WaccaUser = WaccaUser() var isAccepted = false } @@ -55,40 +57,37 @@ class WcUserGate : WaccaUserEntity() { var page = 0 var progress = 0 var loops = 0 + @Temporal(TemporalType.TIMESTAMP) + var lastUsed = 0 var missionFlag = 0 var totalPoints = 0 + + fun ls() = ls(gateId, page, progress, loops, lastUsed, missionFlag) } @Entity @Table(name = "wacca_user_item", uniqueConstraints = [UC("", ["user_id", "item_id", "type"])]) -class WcUserItem() : WaccaUserEntity() { - var itemId = 0 - var type = 0 - var acquireDate = "" - var useCount = 0 +class WcUserItem( + var type: Int = 0, - constructor(u: WaccaUser, id: Int, typ: WaccaItemType) : this() { user = u; itemId = id; type = typ() } -} + // Item prop represents different things based on the item type + var itemId: Int = 0, + var p1: Long = 0L, + var p2: Long = 0L, + var p3: Long = 0L +) : WaccaUserEntity() { + fun ls() = when (type) { + MUSIC_UNLOCK() -> ls(itemId, p1, p2, p3) // songId, diff, acquireDate, unlockDate + ICON() -> ls(itemId, type, p1, p2) // id, type, uses, acquiredDate + TROPHY() -> ls(itemId, p1, p2, p3) // id, season, progress, badgeType + SKILL() -> ls(itemId, p1, p2, p3) // skillType, level, flag, badge + TICKET() -> ls(id, itemId, p1) // userTicketId, ticketId, expire + NAVIGATOR() -> ls(itemId, type, p1, p2, p3) // id, type, acquiredDate, uses, usesToday -@Entity @Table(name = "wacca_user_ticket", uniqueConstraints = [UC("", ["user_id", "ticket_id"])]) -class WcUserTicket : WaccaUserEntity() { - var ticketId = 0 - var acquireDate = "" - var expireDate = "" -} + // Generic: title, note colors, note sounds, plates, touch effects + else -> ls(itemId, type, p1) + } -@Entity @Table(name = "wacca_user_song_unlock", uniqueConstraints = [UC("", ["user_id", "song_id"])]) -class WcUserSongUnlock : WaccaUserEntity() { - var songId = 0 - var highestDifficulty = 0 - var acquireDate = "" -} - -@Entity @Table(name = "wacca_user_trophy", uniqueConstraints = [UC("", ["user_id", "trophy_id", "season"])]) -class WcUserTrophy : WaccaUserEntity() { - var trophyId = 0 - var season = 0 - var progress = 0 - var badgeType = 0 + infix fun isType(t: WaccaItemType) = type == t() } @Entity @Table(name = "wacca_user_score", uniqueConstraints = [UC("", ["user_id", "song_id", "chart_id"])]) diff --git a/src/main/resources/db/migration/mariadb/V1000_12__wacca_db_revision.sql b/src/main/resources/db/migration/mariadb/V1000_12__wacca_db_revision.sql new file mode 100644 index 00000000..a9acf529 --- /dev/null +++ b/src/main/resources/db/migration/mariadb/V1000_12__wacca_db_revision.sql @@ -0,0 +1,46 @@ +ALTER TABLE wacca_user_song_unlock + DROP FOREIGN KEY fku_wacca_user_song_unlock; + +ALTER TABLE wacca_user_ticket + DROP FOREIGN KEY fku_wacca_user_ticket; + +ALTER TABLE wacca_user_trophy + DROP FOREIGN KEY fku_wacca_user_trophy; + +DROP TABLE maimai2_game_ticket; + +DROP TABLE wacca_user_song_unlock; + +DROP TABLE wacca_user_ticket; + +DROP TABLE wacca_user_trophy; + +ALTER TABLE wacca_user_gate + ADD last_used datetime NOT NULL; + +ALTER TABLE wacca_user_item + ADD p1 BIGINT NOT NULL; + +ALTER TABLE wacca_user_item + ADD p2 BIGINT NOT NULL; + +ALTER TABLE wacca_user_item + ADD p3 BIGINT NOT NULL; + +ALTER TABLE wacca_user_item + DROP COLUMN acquire_date; + +ALTER TABLE wacca_user_item + DROP COLUMN use_count; + +ALTER TABLE wacca_user + DROP COLUMN last_login_date; + +ALTER TABLE wacca_user + DROP COLUMN vip_expire_time; + +ALTER TABLE wacca_user + ADD last_login_date time NOT NULL; + +ALTER TABLE wacca_user + ADD vip_expire_time time NOT NULL;