mirror of
https://github.com/MewoLab/AquaDX.git
synced 2026-09-22 22:38:14 +03:00
fix: ongeki adventure map progress dedupe, store. and query by eventid+mapid
This commit is contained in:
@@ -162,7 +162,10 @@ interface OgkUserGachaRepo : OngekiUserLinked<UserGacha> {
|
||||
}
|
||||
|
||||
// Re:Fresh
|
||||
interface OgkUserEventMapRepo : OngekiUserLinked<UserEventMap>
|
||||
interface OgkUserEventMapRepo : OngekiUserLinked<UserEventMap> {
|
||||
fun findByUserAndEventIdAndMapId(user: UserData, eventId: Int, mapId: Int): UserEventMap?
|
||||
fun findByUser_Card_ExtIdAndEventIdAndMapId(extId: Long, eventId: Int, mapId: Int): UserEventMap?
|
||||
}
|
||||
interface OgkUserSkinRepo : OngekiUserLinked<UserSkin>
|
||||
|
||||
|
||||
|
||||
@@ -74,7 +74,9 @@ fun OngekiController.initUpsertAll() {
|
||||
// UserEventMap
|
||||
userEventMap?.let {
|
||||
db.eventMap.save(it.apply {
|
||||
id = db.eventMap.findSingleByUser(u)?.id ?: 0 }) }
|
||||
id = db.eventMap.findByUserAndEventIdAndMapId(u, it.eventId, it.mapId)?.id ?: 0
|
||||
})
|
||||
}
|
||||
|
||||
// UserPlaylogList
|
||||
userPlaylogList?.let { db.playlog.saveAll(it) }
|
||||
|
||||
@@ -17,7 +17,14 @@ fun OngekiController.initUser() {
|
||||
"GetUserData" { mapOf("userId" to uid, "userData" to db.data.findByCard_ExtId(uid)) }
|
||||
|
||||
"GetUserOption" { mapOf("userId" to uid, "userOption" to db.option.findSingleByUser_Card_ExtId(uid)) }
|
||||
"GetUserEventMap" { mapOf("userId" to uid, "userEventMap" to db.eventMap.findSingleByUser_Card_ExtId(uid)) }
|
||||
"GetUserEventMap" {
|
||||
val eventId = parsing { data["eventId"]!!.int }
|
||||
val mapId = parsing { data["mapId"]!!.int }
|
||||
mapOf(
|
||||
"userId" to uid,
|
||||
"userEventMap" to db.eventMap.findByUser_Card_ExtIdAndEventIdAndMapId(uid, eventId, mapId)
|
||||
)
|
||||
}
|
||||
|
||||
"GetUserTechEvent".unpaged { db.techEvent.findByUser_Card_ExtId(uid) }
|
||||
"GetUserBoss".unpaged { db.boss.findByUser_Card_ExtId(uid) }
|
||||
|
||||
@@ -498,7 +498,10 @@ class UserTrainingRoom : OngekiUserEntity() {
|
||||
|
||||
// Re:Fresh
|
||||
@Entity(name = "OngekiUserEventMap")
|
||||
@Table(name = "ongeki_user_event_map")
|
||||
@Table(
|
||||
name = "ongeki_user_event_map",
|
||||
uniqueConstraints = [UniqueConstraint(columnNames = ["user_id", "event_id", "map_id"])]
|
||||
)
|
||||
class UserEventMap : OngekiUserEntity() {
|
||||
var eventId = 0
|
||||
var mapId = 0
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
-- dedupe before adding new constraint just in case
|
||||
DELETE FROM ongeki_user_event_map
|
||||
WHERE id NOT IN (
|
||||
SELECT id
|
||||
FROM (
|
||||
SELECT MAX(id) AS id
|
||||
FROM ongeki_user_event_map
|
||||
GROUP BY user_id, event_id, map_id
|
||||
) AS rows_to_keep
|
||||
);
|
||||
|
||||
ALTER TABLE ongeki_user_event_map
|
||||
ADD UNIQUE KEY uniq_ongeki_user_event_map (user_id, event_id, map_id);
|
||||
Reference in New Issue
Block a user