From 0fbe139e8d11f6bff4648104cb69d90a7881eb94 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Thu, 28 Mar 2024 05:56:52 -0400 Subject: [PATCH] [F] Fix wacca db constraints --- .../icu/samnyan/aqua/sega/wacca/Constants.kt | 2 +- .../aqua/sega/wacca/model/db/WaccaUser.kt | 4 +-- .../sega/wacca/model/db/WaccaUserModels.kt | 14 +++++--- .../mariadb/V1000_12__wacca_db_revision.sql | 35 +++++++------------ 4 files changed, 24 insertions(+), 31 deletions(-) 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 0d9dbf5d..822fcb99 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(id, this()).apply { user = u } + operator fun invoke(u: WaccaUser, id: Int) = WcUserItem(type = this(), itemId = id).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/WaccaUser.kt b/src/main/java/icu/samnyan/aqua/sega/wacca/model/db/WaccaUser.kt index df8bb2f5..ba2a5573 100644 --- a/src/main/java/icu/samnyan/aqua/sega/wacca/model/db/WaccaUser.kt +++ b/src/main/java/icu/samnyan/aqua/sega/wacca/model/db/WaccaUser.kt @@ -28,7 +28,7 @@ class WaccaUser : BaseEntity() { var title1 = 0 var title2 = 0 var rating = 0 - @Temporal(TemporalType.TIME) + @Temporal(TemporalType.TIMESTAMP) var vipExpireTime: Date = Date(0) var alwaysVip = false var loginCount = 0 @@ -51,7 +51,7 @@ class WaccaUser : BaseEntity() { var lastFolderOrder = 0 var lastFolderId = 0 var lastSongOrder = 0 - @Temporal(TemporalType.TIME) + @Temporal(TemporalType.TIMESTAMP) var lastLoginDate: Date = Date(0) var gateTutorialFlags: String? = null 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 1d9aa356..fbe06ffa 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 @@ -6,6 +6,7 @@ import icu.samnyan.aqua.net.games.BaseEntity import icu.samnyan.aqua.sega.wacca.WaccaItemType import icu.samnyan.aqua.sega.wacca.WaccaItemType.* import jakarta.persistence.* +import java.util.* typealias UC = UniqueConstraint @@ -73,18 +74,21 @@ class WcUserItem( var itemId: Int = 0, var p1: Long = 0L, var p2: Long = 0L, - var p3: Long = 0L + var p3: Long = 0L, + + @Temporal(TemporalType.TIMESTAMP) + var acquiredDate: Date = Date(), ) : 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 + MUSIC_UNLOCK() -> ls(itemId, p1, acquiredDate, acquiredDate) // songId, diff, acquireDate, unlockDate + ICON() -> ls(itemId, type, p1, acquiredDate) // 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 + NAVIGATOR() -> ls(itemId, type, acquiredDate, p1, p2) // id, type, acquiredDate, uses, usesToday // Generic: title, note colors, note sounds, plates, touch effects - else -> ls(itemId, type, p1) + else -> ls(itemId, type, acquiredDate) // id, type, acquireDate } infix fun isType(t: WaccaItemType) = type == t() 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 index a9acf529..100e3336 100644 --- 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 @@ -19,28 +19,17 @@ 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; + ADD p1 BIGINT NOT NULL, + ADD p2 BIGINT NOT NULL, + ADD p3 BIGINT NOT NULL, + DROP COLUMN acquire_date, + DROP COLUMN use_count, + ADD acquired_date datetime NOT NULL, + DROP CONSTRAINT wacca_user_item_unique, + ADD CONSTRAINT wacca_user_item_unique UNIQUE (user_id, item_id, type); 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; + DROP COLUMN last_login_date, + DROP COLUMN vip_expire_time, + ADD last_login_date datetime NOT NULL, + ADD vip_expire_time datetime NOT NULL;