Merge branch 'ongeki2dev' into 'master'

[ongeki]fix DB table ongeki_user_rival wrong foreign key and rename...

See merge request domeori/aqua!17
pull/1/head
Dom Eori 2023-01-06 14:06:45 +00:00
commit 91e15c3105
7 changed files with 46 additions and 8 deletions

View File

@ -343,7 +343,7 @@ public class ApiOngekiPlayerDataController {
public List<UserRivalData> getRival(@RequestParam long aimeId) {
var rivalUserIds = userRivalDataRepository.findByUser_Card_ExtId(aimeId)
.stream()
.map(x -> x.getRivalUserId())
.map(x -> x.getRivalUserExtId())
.collect(Collectors.toList());
var rivalDataList = userDataRepository.findByCard_ExtIdIn(rivalUserIds)
@ -356,7 +356,7 @@ public class ApiOngekiPlayerDataController {
@DeleteMapping("rival")
public MessageResponse deleteRival(@RequestParam long aimeId, @RequestParam long rivalAimeId) {
userRivalDataRepository.removeByUser_Card_ExtIdAndRivalUserId(aimeId, rivalAimeId);
userRivalDataRepository.removeByUser_Card_ExtIdAndRivalUserExtId(aimeId, rivalAimeId);
return new MessageResponse();
}
@ -376,9 +376,12 @@ public class ApiOngekiPlayerDataController {
return new ObjectMessageResponse<>("Rival user isn't ongeki player.");
var rivalUser = rivalUserOpt.get();
if(user == rivalUser)
return new ObjectMessageResponse<>("Can't add yourself as an rival.");
var rival = new UserRival();
rival.setUser(user);
rival.setRivalUserId(rivalUser.getCard().getExtId());
rival.setRivalUserExtId(rivalUser.getCard().getExtId());
userRivalDataRepository.save(rival);
return new ObjectMessageResponse<>(new UserRivalData(rivalUser.getCard().getExtId(), rivalUser.getUserName()));

View File

@ -17,7 +17,7 @@ public interface UserRivalDataRepository extends JpaRepository<UserRival, Long>
List<UserRival> findByUser_Card_ExtId(long userId);
@Transactional
void removeByUser_Card_ExtIdAndRivalUserId(long userId,long rivalUserId);
void removeByUser_Card_ExtIdAndRivalUserExtId(long userId,long rivalUserId);
@Transactional
void deleteByUser(UserData user);

View File

@ -32,7 +32,7 @@ public class UserRival implements Serializable {
@JoinColumn(name = "user_id")
private UserData user;
@JoinColumn(name = "rival_user_id")
@JoinColumn(name = "rival_user_ext_id")
@JsonProperty("rivalUserId")
private long rivalUserId;
}
private long rivalUserExtId;
}

View File

@ -0,0 +1,3 @@
ALTER TABLE `ongeki_user_rival` DROP FOREIGN KEY `FK__ongeki_user_data_2`;
ALTER TABLE `ongeki_user_rival` ADD CONSTRAINT `FK__ongeki_user_data_2` FOREIGN KEY (rival_user_id) REFERENCES `sega_card` (`ext_id`) ON DELETE CASCADE ON UPDATE NO ACTION;
ALTER TABLE `ongeki_user_rival` RENAME COLUMN `rival_user_id` TO `rival_user_ext_id`;

View File

@ -0,0 +1,3 @@
ALTER TABLE `ongeki_user_rival` DROP FOREIGN KEY `FK__ongeki_user_data_2`;
ALTER TABLE `ongeki_user_rival` ADD CONSTRAINT `FK__ongeki_user_data_2` FOREIGN KEY (rival_user_id) REFERENCES `sega_card` (`ext_id`) ON DELETE CASCADE ON UPDATE NO ACTION;
ALTER TABLE `ongeki_user_rival` RENAME COLUMN `rival_user_id` TO `rival_user_ext_id`;

View File

@ -0,0 +1,21 @@
-- This migration that recreate(alter) table which foreign key "rival_user_id" reference will be modified from "ongeki_user_data"("id") to "sega_card"("ext_id")
-- Before commit 687df8f57b59e1a06393f87f3dd734f5a9b3c732 , the type of UserRival.rivalUser is UserData and FK "rival_user_id" is right.
-- After this commit, UserRival.rivalUser is rename as UserRival.rivalUserId and FK "rival_user_id" must be modified.
CREATE TABLE "ongeki_user_rival_new" (
"id" INTEGER NOT NULL,
"rival_user_ext_id" BIGINT,
"user_id" BIGINT,
FOREIGN KEY("user_id") REFERENCES "ongeki_user_data"("id") ON DELETE CASCADE,
FOREIGN KEY("rival_user_ext_id") REFERENCES "sega_card"("ext_id") ON DELETE CASCADE,
PRIMARY KEY("id" AUTOINCREMENT),
CONSTRAINT "ongeki_user_rival_uq" UNIQUE("user_id","rival_user_ext_id") ON CONFLICT REPLACE
);
-- copy data from old to new.
INSERT INTO ongeki_user_rival_new(id,rival_user_ext_id,user_id) SELECT id,rival_user_id,user_id FROM ongeki_user_rival;
-- rename current to backup.
ALTER TABLE ongeki_user_rival RENAME TO ongeki_user_rival_old;
-- rename new as current.
ALTER TABLE ongeki_user_rival_new RENAME TO ongeki_user_rival;

View File

@ -345,7 +345,6 @@ class OngekiRepositoryTest {
var u = getNewRandomValidUser();
var r1 = getNewRandomValidUser();
var r2 = getNewRandomValidUser();
var r3 = getNewRandomValidUser();
userRivalDataRepository.saveAll(List.of(
getUserRival(u, r1),
@ -359,6 +358,15 @@ class OngekiRepositoryTest {
var find = userRivalDataRepository.findByUser_Card_ExtId(u.getCard().getExtId());
assertThat(find).hasSize(2);
var find2 = userRivalDataRepository.findByUser_Card_ExtId(r1.getCard().getExtId());
assertThat(find2).hasSize(1);
//remove r1's rival
userRivalDataRepository.removeByUser_Card_ExtIdAndRivalUserExtId(r1.getCard().getExtId(), r2.getCard().getExtId());
var find3 = userRivalDataRepository.findByUser_Card_ExtId(r1.getCard().getExtId());
assertThat(find3).hasSize(0);
}
private UserData getUser(Card c) {