From 33f97fe21f46f660f658da447535c8bb7bc18e8d Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Fri, 21 Mar 2025 16:41:26 -0400 Subject: [PATCH 1/9] [M] Move sql migrations --- .../db/{ => 40}/V1000_10__fix_unique.sql | 0 .../db/{ => 40}/V1000_11__wacca_init.sql | 0 .../db/{ => 40}/V1000_12__wacca_reinit.sql | 0 .../db/{ => 40}/V1000_13__wacca_cheats.sql | 0 .../db/{ => 40}/V1000_14__ranking_ban.sql | 0 .../db/{ => 40}/V1000_15__diva_id.sql | 0 .../db/{ => 40}/V1000_16__safety.sql | 0 .../V1000_17__wacca_last_client_id.sql | 0 .../V1000_18__opt_out_of_leaderboard.sql | 0 .../db/{ => 40}/V1000_19__optimization.sql | 0 .../db/{ => 40}/V1000_1__add_aquanet_user.sql | 96 +++++++++---------- .../V1000_20__keychip_session_game_id.sql | 4 +- .../db/{ => 40}/V1000_21__chusan_team.sql | 0 .../db/{ => 40}/V1000_22__chusan_unique.sql | 0 .../V1000_23__chusan_infinite_penguins.sql | 0 .../V1000_24__chusan_matching_member.sql | 0 .../db/{ => 40}/V1000_25__mai2_unique.sql | 0 .../db/{ => 40}/V1000_26__chusan_matching.sql | 0 .../V1000_27__chusan_net_battle_log.sql | 0 .../V1000_28__chusan_drops_database.sql | 0 .../V1000_29__chusan_favorite_music_fix.sql | 0 .../db/{ => 40}/V1000_2__secure_allnet.sql | 36 +++---- .../{ => 40}/V1000_30__chusan_user_misc.sql | 0 .../db/{ => 40}/V1000_31__chusan_cascade.sql | 0 .../V1000_32__maimai2_music_ranking_index.sql | 0 .../db/{ => 40}/V1000_33__maimai2_prism.sql | 0 .../V1000_34__maimai2_prism_events.sql | 0 .../V1000_35__maimai2_optional_music_rank.sql | 0 .../V1000_36__maimai2_maimile_intimate.sql | 30 +++--- .../V1000_37__ongeki_infinite_kaika.sql | 0 .../V1000_38__chusan_verse_event_121.sql | 0 .../resources/db/{ => 40}/V1000_3__pfp.sql | 0 .../db/{ => 40}/V1000_40__chusan_verse.sql | 0 .../{ => 40}/V1000_4__aqua_game_options.sql | 34 +++---- .../db/{ => 40}/V1000_5__cleanup.sql | 20 ++-- ...V1000_6__chusan_playlog_sunplus_fields.sql | 0 .../db/{ => 40}/V1000_7__fix_fk_cascade.sql | 0 .../V1000_8__fix_userid_nullability.sql | 0 .../V1000_9__fix_mai2_nullability.sql | 0 39 files changed, 110 insertions(+), 110 deletions(-) rename src/main/resources/db/{ => 40}/V1000_10__fix_unique.sql (100%) rename src/main/resources/db/{ => 40}/V1000_11__wacca_init.sql (100%) rename src/main/resources/db/{ => 40}/V1000_12__wacca_reinit.sql (100%) rename src/main/resources/db/{ => 40}/V1000_13__wacca_cheats.sql (100%) rename src/main/resources/db/{ => 40}/V1000_14__ranking_ban.sql (100%) rename src/main/resources/db/{ => 40}/V1000_15__diva_id.sql (100%) rename src/main/resources/db/{ => 40}/V1000_16__safety.sql (100%) rename src/main/resources/db/{ => 40}/V1000_17__wacca_last_client_id.sql (100%) rename src/main/resources/db/{ => 40}/V1000_18__opt_out_of_leaderboard.sql (100%) rename src/main/resources/db/{ => 40}/V1000_19__optimization.sql (100%) rename src/main/resources/db/{ => 40}/V1000_1__add_aquanet_user.sql (95%) rename src/main/resources/db/{ => 40}/V1000_20__keychip_session_game_id.sql (97%) rename src/main/resources/db/{ => 40}/V1000_21__chusan_team.sql (100%) rename src/main/resources/db/{ => 40}/V1000_22__chusan_unique.sql (100%) rename src/main/resources/db/{ => 40}/V1000_23__chusan_infinite_penguins.sql (100%) rename src/main/resources/db/{ => 40}/V1000_24__chusan_matching_member.sql (100%) rename src/main/resources/db/{ => 40}/V1000_25__mai2_unique.sql (100%) rename src/main/resources/db/{ => 40}/V1000_26__chusan_matching.sql (100%) rename src/main/resources/db/{ => 40}/V1000_27__chusan_net_battle_log.sql (100%) rename src/main/resources/db/{ => 40}/V1000_28__chusan_drops_database.sql (100%) rename src/main/resources/db/{ => 40}/V1000_29__chusan_favorite_music_fix.sql (100%) rename src/main/resources/db/{ => 40}/V1000_2__secure_allnet.sql (90%) rename src/main/resources/db/{ => 40}/V1000_30__chusan_user_misc.sql (100%) rename src/main/resources/db/{ => 40}/V1000_31__chusan_cascade.sql (100%) rename src/main/resources/db/{ => 40}/V1000_32__maimai2_music_ranking_index.sql (100%) rename src/main/resources/db/{ => 40}/V1000_33__maimai2_prism.sql (100%) rename src/main/resources/db/{ => 40}/V1000_34__maimai2_prism_events.sql (100%) rename src/main/resources/db/{ => 40}/V1000_35__maimai2_optional_music_rank.sql (100%) rename src/main/resources/db/{ => 40}/V1000_36__maimai2_maimile_intimate.sql (97%) rename src/main/resources/db/{ => 40}/V1000_37__ongeki_infinite_kaika.sql (100%) rename src/main/resources/db/{ => 40}/V1000_38__chusan_verse_event_121.sql (100%) rename src/main/resources/db/{ => 40}/V1000_3__pfp.sql (100%) rename src/main/resources/db/{ => 40}/V1000_40__chusan_verse.sql (100%) rename src/main/resources/db/{ => 40}/V1000_4__aqua_game_options.sql (90%) rename src/main/resources/db/{ => 40}/V1000_5__cleanup.sql (79%) rename src/main/resources/db/{ => 40}/V1000_6__chusan_playlog_sunplus_fields.sql (100%) rename src/main/resources/db/{ => 40}/V1000_7__fix_fk_cascade.sql (100%) rename src/main/resources/db/{ => 40}/V1000_8__fix_userid_nullability.sql (100%) rename src/main/resources/db/{ => 40}/V1000_9__fix_mai2_nullability.sql (100%) diff --git a/src/main/resources/db/V1000_10__fix_unique.sql b/src/main/resources/db/40/V1000_10__fix_unique.sql similarity index 100% rename from src/main/resources/db/V1000_10__fix_unique.sql rename to src/main/resources/db/40/V1000_10__fix_unique.sql diff --git a/src/main/resources/db/V1000_11__wacca_init.sql b/src/main/resources/db/40/V1000_11__wacca_init.sql similarity index 100% rename from src/main/resources/db/V1000_11__wacca_init.sql rename to src/main/resources/db/40/V1000_11__wacca_init.sql diff --git a/src/main/resources/db/V1000_12__wacca_reinit.sql b/src/main/resources/db/40/V1000_12__wacca_reinit.sql similarity index 100% rename from src/main/resources/db/V1000_12__wacca_reinit.sql rename to src/main/resources/db/40/V1000_12__wacca_reinit.sql diff --git a/src/main/resources/db/V1000_13__wacca_cheats.sql b/src/main/resources/db/40/V1000_13__wacca_cheats.sql similarity index 100% rename from src/main/resources/db/V1000_13__wacca_cheats.sql rename to src/main/resources/db/40/V1000_13__wacca_cheats.sql diff --git a/src/main/resources/db/V1000_14__ranking_ban.sql b/src/main/resources/db/40/V1000_14__ranking_ban.sql similarity index 100% rename from src/main/resources/db/V1000_14__ranking_ban.sql rename to src/main/resources/db/40/V1000_14__ranking_ban.sql diff --git a/src/main/resources/db/V1000_15__diva_id.sql b/src/main/resources/db/40/V1000_15__diva_id.sql similarity index 100% rename from src/main/resources/db/V1000_15__diva_id.sql rename to src/main/resources/db/40/V1000_15__diva_id.sql diff --git a/src/main/resources/db/V1000_16__safety.sql b/src/main/resources/db/40/V1000_16__safety.sql similarity index 100% rename from src/main/resources/db/V1000_16__safety.sql rename to src/main/resources/db/40/V1000_16__safety.sql diff --git a/src/main/resources/db/V1000_17__wacca_last_client_id.sql b/src/main/resources/db/40/V1000_17__wacca_last_client_id.sql similarity index 100% rename from src/main/resources/db/V1000_17__wacca_last_client_id.sql rename to src/main/resources/db/40/V1000_17__wacca_last_client_id.sql diff --git a/src/main/resources/db/V1000_18__opt_out_of_leaderboard.sql b/src/main/resources/db/40/V1000_18__opt_out_of_leaderboard.sql similarity index 100% rename from src/main/resources/db/V1000_18__opt_out_of_leaderboard.sql rename to src/main/resources/db/40/V1000_18__opt_out_of_leaderboard.sql diff --git a/src/main/resources/db/V1000_19__optimization.sql b/src/main/resources/db/40/V1000_19__optimization.sql similarity index 100% rename from src/main/resources/db/V1000_19__optimization.sql rename to src/main/resources/db/40/V1000_19__optimization.sql diff --git a/src/main/resources/db/V1000_1__add_aquanet_user.sql b/src/main/resources/db/40/V1000_1__add_aquanet_user.sql similarity index 95% rename from src/main/resources/db/V1000_1__add_aquanet_user.sql rename to src/main/resources/db/40/V1000_1__add_aquanet_user.sql index af652d07..06209cb7 100644 --- a/src/main/resources/db/V1000_1__add_aquanet_user.sql +++ b/src/main/resources/db/40/V1000_1__add_aquanet_user.sql @@ -1,49 +1,49 @@ -CREATE TABLE aqua_net_user -( - au_id BIGINT AUTO_INCREMENT NOT NULL, - username VARCHAR(32) NOT NULL, - email VARCHAR(255) NOT NULL, - email_confirmed BOOLEAN NOT NULL, - pw_hash VARCHAR(255) NOT NULL, - display_name VARCHAR(32) NULL, - country VARCHAR(3) NULL, - last_login BIGINT NOT NULL, - reg_time BIGINT NOT NULL, - profile_location VARCHAR(255) NULL, - profile_bio VARCHAR(255) NULL, - ghost_card BIGINT NOT NULL, - CONSTRAINT pk_aqua_net_user PRIMARY KEY (au_id) -); - -ALTER TABLE sega_card - ADD net_user_id BIGINT NULL; - -ALTER TABLE sega_card - ADD is_ghost BOOLEAN NOT NULL DEFAULT FALSE; - -ALTER TABLE aqua_net_user - ADD CONSTRAINT uc_aqua_net_user_email UNIQUE (email); - -ALTER TABLE aqua_net_user - ADD CONSTRAINT uc_aqua_net_user_username UNIQUE (username); - -ALTER TABLE sega_card - ADD CONSTRAINT FK_SEGA_CARD_ON_NET_USER FOREIGN KEY (net_user_id) REFERENCES aqua_net_user (au_id); - -ALTER TABLE aqua_net_user - ADD CONSTRAINT uc_aqua_net_user_canonical_card UNIQUE (ghost_card); - -ALTER TABLE aqua_net_user - ADD CONSTRAINT FK_AQUA_NET_USER_ON_CANONICAL_CARD FOREIGN KEY (ghost_card) REFERENCES sega_card (id); - -CREATE TABLE aqua_net_email_confirmation -( - id BIGINT AUTO_INCREMENT NOT NULL, - token VARCHAR(255) NOT NULL, - created_at datetime NOT NULL, - au_id BIGINT NULL, - CONSTRAINT pk_email_confirmation PRIMARY KEY (id) -); - -ALTER TABLE aqua_net_email_confirmation +CREATE TABLE aqua_net_user +( + au_id BIGINT AUTO_INCREMENT NOT NULL, + username VARCHAR(32) NOT NULL, + email VARCHAR(255) NOT NULL, + email_confirmed BOOLEAN NOT NULL, + pw_hash VARCHAR(255) NOT NULL, + display_name VARCHAR(32) NULL, + country VARCHAR(3) NULL, + last_login BIGINT NOT NULL, + reg_time BIGINT NOT NULL, + profile_location VARCHAR(255) NULL, + profile_bio VARCHAR(255) NULL, + ghost_card BIGINT NOT NULL, + CONSTRAINT pk_aqua_net_user PRIMARY KEY (au_id) +); + +ALTER TABLE sega_card + ADD net_user_id BIGINT NULL; + +ALTER TABLE sega_card + ADD is_ghost BOOLEAN NOT NULL DEFAULT FALSE; + +ALTER TABLE aqua_net_user + ADD CONSTRAINT uc_aqua_net_user_email UNIQUE (email); + +ALTER TABLE aqua_net_user + ADD CONSTRAINT uc_aqua_net_user_username UNIQUE (username); + +ALTER TABLE sega_card + ADD CONSTRAINT FK_SEGA_CARD_ON_NET_USER FOREIGN KEY (net_user_id) REFERENCES aqua_net_user (au_id); + +ALTER TABLE aqua_net_user + ADD CONSTRAINT uc_aqua_net_user_canonical_card UNIQUE (ghost_card); + +ALTER TABLE aqua_net_user + ADD CONSTRAINT FK_AQUA_NET_USER_ON_CANONICAL_CARD FOREIGN KEY (ghost_card) REFERENCES sega_card (id); + +CREATE TABLE aqua_net_email_confirmation +( + id BIGINT AUTO_INCREMENT NOT NULL, + token VARCHAR(255) NOT NULL, + created_at datetime NOT NULL, + au_id BIGINT NULL, + CONSTRAINT pk_email_confirmation PRIMARY KEY (id) +); + +ALTER TABLE aqua_net_email_confirmation ADD CONSTRAINT FK_EMAIL_CONFIRMATION_ON_AQUA_USER FOREIGN KEY (au_id) REFERENCES aqua_net_user (au_id); \ No newline at end of file diff --git a/src/main/resources/db/V1000_20__keychip_session_game_id.sql b/src/main/resources/db/40/V1000_20__keychip_session_game_id.sql similarity index 97% rename from src/main/resources/db/V1000_20__keychip_session_game_id.sql rename to src/main/resources/db/40/V1000_20__keychip_session_game_id.sql index 162c2a2a..bf9f1bc5 100644 --- a/src/main/resources/db/V1000_20__keychip_session_game_id.sql +++ b/src/main/resources/db/40/V1000_20__keychip_session_game_id.sql @@ -1,2 +1,2 @@ -ALTER TABLE allnet_keychip_sessions - ADD game_id VARCHAR(4) NULL; +ALTER TABLE allnet_keychip_sessions + ADD game_id VARCHAR(4) NULL; diff --git a/src/main/resources/db/V1000_21__chusan_team.sql b/src/main/resources/db/40/V1000_21__chusan_team.sql similarity index 100% rename from src/main/resources/db/V1000_21__chusan_team.sql rename to src/main/resources/db/40/V1000_21__chusan_team.sql diff --git a/src/main/resources/db/V1000_22__chusan_unique.sql b/src/main/resources/db/40/V1000_22__chusan_unique.sql similarity index 100% rename from src/main/resources/db/V1000_22__chusan_unique.sql rename to src/main/resources/db/40/V1000_22__chusan_unique.sql diff --git a/src/main/resources/db/V1000_23__chusan_infinite_penguins.sql b/src/main/resources/db/40/V1000_23__chusan_infinite_penguins.sql similarity index 100% rename from src/main/resources/db/V1000_23__chusan_infinite_penguins.sql rename to src/main/resources/db/40/V1000_23__chusan_infinite_penguins.sql diff --git a/src/main/resources/db/V1000_24__chusan_matching_member.sql b/src/main/resources/db/40/V1000_24__chusan_matching_member.sql similarity index 100% rename from src/main/resources/db/V1000_24__chusan_matching_member.sql rename to src/main/resources/db/40/V1000_24__chusan_matching_member.sql diff --git a/src/main/resources/db/V1000_25__mai2_unique.sql b/src/main/resources/db/40/V1000_25__mai2_unique.sql similarity index 100% rename from src/main/resources/db/V1000_25__mai2_unique.sql rename to src/main/resources/db/40/V1000_25__mai2_unique.sql diff --git a/src/main/resources/db/V1000_26__chusan_matching.sql b/src/main/resources/db/40/V1000_26__chusan_matching.sql similarity index 100% rename from src/main/resources/db/V1000_26__chusan_matching.sql rename to src/main/resources/db/40/V1000_26__chusan_matching.sql diff --git a/src/main/resources/db/V1000_27__chusan_net_battle_log.sql b/src/main/resources/db/40/V1000_27__chusan_net_battle_log.sql similarity index 100% rename from src/main/resources/db/V1000_27__chusan_net_battle_log.sql rename to src/main/resources/db/40/V1000_27__chusan_net_battle_log.sql diff --git a/src/main/resources/db/V1000_28__chusan_drops_database.sql b/src/main/resources/db/40/V1000_28__chusan_drops_database.sql similarity index 100% rename from src/main/resources/db/V1000_28__chusan_drops_database.sql rename to src/main/resources/db/40/V1000_28__chusan_drops_database.sql diff --git a/src/main/resources/db/V1000_29__chusan_favorite_music_fix.sql b/src/main/resources/db/40/V1000_29__chusan_favorite_music_fix.sql similarity index 100% rename from src/main/resources/db/V1000_29__chusan_favorite_music_fix.sql rename to src/main/resources/db/40/V1000_29__chusan_favorite_music_fix.sql diff --git a/src/main/resources/db/V1000_2__secure_allnet.sql b/src/main/resources/db/40/V1000_2__secure_allnet.sql similarity index 90% rename from src/main/resources/db/V1000_2__secure_allnet.sql rename to src/main/resources/db/40/V1000_2__secure_allnet.sql index 6029c9da..f5e97d8d 100644 --- a/src/main/resources/db/V1000_2__secure_allnet.sql +++ b/src/main/resources/db/40/V1000_2__secure_allnet.sql @@ -1,19 +1,19 @@ -CREATE TABLE allnet_keychip_sessions -( - token VARCHAR(32) NOT NULL, - au_id BIGINT NULL, - last_use BIGINT NOT NULL, - CONSTRAINT pk_allnet_keychip_sessions PRIMARY KEY (token) -); - -ALTER TABLE aqua_net_user - ADD keychip VARCHAR(32) NULL; - -ALTER TABLE aqua_net_user - ADD CONSTRAINT uc_aqua_net_user_keychip UNIQUE (keychip); - -# Optimization on session cleanup -CREATE INDEX idx_last_use ON allnet_keychip_sessions (last_use); - -ALTER TABLE allnet_keychip_sessions +CREATE TABLE allnet_keychip_sessions +( + token VARCHAR(32) NOT NULL, + au_id BIGINT NULL, + last_use BIGINT NOT NULL, + CONSTRAINT pk_allnet_keychip_sessions PRIMARY KEY (token) +); + +ALTER TABLE aqua_net_user + ADD keychip VARCHAR(32) NULL; + +ALTER TABLE aqua_net_user + ADD CONSTRAINT uc_aqua_net_user_keychip UNIQUE (keychip); + +# Optimization on session cleanup +CREATE INDEX idx_last_use ON allnet_keychip_sessions (last_use); + +ALTER TABLE allnet_keychip_sessions ADD CONSTRAINT FK_ALLNET_KEYCHIP_SESSIONS_ON_AU FOREIGN KEY (au_id) REFERENCES aqua_net_user (au_id); \ No newline at end of file diff --git a/src/main/resources/db/V1000_30__chusan_user_misc.sql b/src/main/resources/db/40/V1000_30__chusan_user_misc.sql similarity index 100% rename from src/main/resources/db/V1000_30__chusan_user_misc.sql rename to src/main/resources/db/40/V1000_30__chusan_user_misc.sql diff --git a/src/main/resources/db/V1000_31__chusan_cascade.sql b/src/main/resources/db/40/V1000_31__chusan_cascade.sql similarity index 100% rename from src/main/resources/db/V1000_31__chusan_cascade.sql rename to src/main/resources/db/40/V1000_31__chusan_cascade.sql diff --git a/src/main/resources/db/V1000_32__maimai2_music_ranking_index.sql b/src/main/resources/db/40/V1000_32__maimai2_music_ranking_index.sql similarity index 100% rename from src/main/resources/db/V1000_32__maimai2_music_ranking_index.sql rename to src/main/resources/db/40/V1000_32__maimai2_music_ranking_index.sql diff --git a/src/main/resources/db/V1000_33__maimai2_prism.sql b/src/main/resources/db/40/V1000_33__maimai2_prism.sql similarity index 100% rename from src/main/resources/db/V1000_33__maimai2_prism.sql rename to src/main/resources/db/40/V1000_33__maimai2_prism.sql diff --git a/src/main/resources/db/V1000_34__maimai2_prism_events.sql b/src/main/resources/db/40/V1000_34__maimai2_prism_events.sql similarity index 100% rename from src/main/resources/db/V1000_34__maimai2_prism_events.sql rename to src/main/resources/db/40/V1000_34__maimai2_prism_events.sql diff --git a/src/main/resources/db/V1000_35__maimai2_optional_music_rank.sql b/src/main/resources/db/40/V1000_35__maimai2_optional_music_rank.sql similarity index 100% rename from src/main/resources/db/V1000_35__maimai2_optional_music_rank.sql rename to src/main/resources/db/40/V1000_35__maimai2_optional_music_rank.sql diff --git a/src/main/resources/db/V1000_36__maimai2_maimile_intimate.sql b/src/main/resources/db/40/V1000_36__maimai2_maimile_intimate.sql similarity index 97% rename from src/main/resources/db/V1000_36__maimai2_maimile_intimate.sql rename to src/main/resources/db/40/V1000_36__maimai2_maimile_intimate.sql index 8cb4ba59..72a68cbd 100644 --- a/src/main/resources/db/V1000_36__maimai2_maimile_intimate.sql +++ b/src/main/resources/db/40/V1000_36__maimai2_maimile_intimate.sql @@ -1,15 +1,15 @@ -ALTER TABLE maimai2_user_detail - ADD COLUMN point INT DEFAULT 0, - ADD COLUMN total_point INT DEFAULT 0; - -CREATE TABLE maimai2_user_intimate -( - id BIGINT AUTO_INCREMENT NOT NULL PRIMARY KEY, - user_id BIGINT NULL, - partner_id INT NOT NULL, - intimate_level INT NOT NULL, - intimate_count_rewarded INT NOT NULL, - CONSTRAINT fku_maimai2_user_intimate FOREIGN KEY (user_id) REFERENCES maimai2_user_detail (id) ON DELETE CASCADE ON UPDATE CASCADE, - CONSTRAINT unique_maimai2_user_intimate UNIQUE (user_id, partner_id) -); - +ALTER TABLE maimai2_user_detail + ADD COLUMN point INT DEFAULT 0, + ADD COLUMN total_point INT DEFAULT 0; + +CREATE TABLE maimai2_user_intimate +( + id BIGINT AUTO_INCREMENT NOT NULL PRIMARY KEY, + user_id BIGINT NULL, + partner_id INT NOT NULL, + intimate_level INT NOT NULL, + intimate_count_rewarded INT NOT NULL, + CONSTRAINT fku_maimai2_user_intimate FOREIGN KEY (user_id) REFERENCES maimai2_user_detail (id) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT unique_maimai2_user_intimate UNIQUE (user_id, partner_id) +); + diff --git a/src/main/resources/db/V1000_37__ongeki_infinite_kaika.sql b/src/main/resources/db/40/V1000_37__ongeki_infinite_kaika.sql similarity index 100% rename from src/main/resources/db/V1000_37__ongeki_infinite_kaika.sql rename to src/main/resources/db/40/V1000_37__ongeki_infinite_kaika.sql diff --git a/src/main/resources/db/V1000_38__chusan_verse_event_121.sql b/src/main/resources/db/40/V1000_38__chusan_verse_event_121.sql similarity index 100% rename from src/main/resources/db/V1000_38__chusan_verse_event_121.sql rename to src/main/resources/db/40/V1000_38__chusan_verse_event_121.sql diff --git a/src/main/resources/db/V1000_3__pfp.sql b/src/main/resources/db/40/V1000_3__pfp.sql similarity index 100% rename from src/main/resources/db/V1000_3__pfp.sql rename to src/main/resources/db/40/V1000_3__pfp.sql diff --git a/src/main/resources/db/V1000_40__chusan_verse.sql b/src/main/resources/db/40/V1000_40__chusan_verse.sql similarity index 100% rename from src/main/resources/db/V1000_40__chusan_verse.sql rename to src/main/resources/db/40/V1000_40__chusan_verse.sql diff --git a/src/main/resources/db/V1000_4__aqua_game_options.sql b/src/main/resources/db/40/V1000_4__aqua_game_options.sql similarity index 90% rename from src/main/resources/db/V1000_4__aqua_game_options.sql rename to src/main/resources/db/40/V1000_4__aqua_game_options.sql index 6a8bb1ac..877e4143 100644 --- a/src/main/resources/db/V1000_4__aqua_game_options.sql +++ b/src/main/resources/db/40/V1000_4__aqua_game_options.sql @@ -1,18 +1,18 @@ -CREATE TABLE aqua_game_options -( - id BIGINT AUTO_INCREMENT NOT NULL, - unlock_music BIT(1) NOT NULL, - unlock_chara BIT(1) NOT NULL, - unlock_collectables BIT(1) NOT NULL, - unlock_tickets BIT(1) NOT NULL, - CONSTRAINT pk_aquagameoptions PRIMARY KEY (id) -); - -ALTER TABLE aqua_net_user - ADD game_options BIGINT NULL; - -ALTER TABLE aqua_net_user - ADD CONSTRAINT uc_aquanetuser_gameoptions UNIQUE (game_options); - -ALTER TABLE aqua_net_user +CREATE TABLE aqua_game_options +( + id BIGINT AUTO_INCREMENT NOT NULL, + unlock_music BIT(1) NOT NULL, + unlock_chara BIT(1) NOT NULL, + unlock_collectables BIT(1) NOT NULL, + unlock_tickets BIT(1) NOT NULL, + CONSTRAINT pk_aquagameoptions PRIMARY KEY (id) +); + +ALTER TABLE aqua_net_user + ADD game_options BIGINT NULL; + +ALTER TABLE aqua_net_user + ADD CONSTRAINT uc_aquanetuser_gameoptions UNIQUE (game_options); + +ALTER TABLE aqua_net_user ADD CONSTRAINT FK_AQUANETUSER_ON_GAMEOPTIONS FOREIGN KEY (game_options) REFERENCES aqua_game_options (id); \ No newline at end of file diff --git a/src/main/resources/db/V1000_5__cleanup.sql b/src/main/resources/db/40/V1000_5__cleanup.sql similarity index 79% rename from src/main/resources/db/V1000_5__cleanup.sql rename to src/main/resources/db/40/V1000_5__cleanup.sql index 0d23d4da..a4e25ff1 100644 --- a/src/main/resources/db/V1000_5__cleanup.sql +++ b/src/main/resources/db/40/V1000_5__cleanup.sql @@ -1,11 +1,11 @@ -ALTER TABLE bak_maimai2_user_rate - DROP FOREIGN KEY FKfaewgvanchzwo8um; - -DROP TABLE bak_diva_pv_entry; - -DROP TABLE bak_maimai2_user_rate; - -DROP TABLE hibernate_sequence; - -ALTER TABLE chusan_user_data +ALTER TABLE bak_maimai2_user_rate + DROP FOREIGN KEY FKfaewgvanchzwo8um; + +DROP TABLE bak_diva_pv_entry; + +DROP TABLE bak_maimai2_user_rate; + +DROP TABLE hibernate_sequence; + +ALTER TABLE chusan_user_data DROP COLUMN rank_up_challenge_results; \ No newline at end of file diff --git a/src/main/resources/db/V1000_6__chusan_playlog_sunplus_fields.sql b/src/main/resources/db/40/V1000_6__chusan_playlog_sunplus_fields.sql similarity index 100% rename from src/main/resources/db/V1000_6__chusan_playlog_sunplus_fields.sql rename to src/main/resources/db/40/V1000_6__chusan_playlog_sunplus_fields.sql diff --git a/src/main/resources/db/V1000_7__fix_fk_cascade.sql b/src/main/resources/db/40/V1000_7__fix_fk_cascade.sql similarity index 100% rename from src/main/resources/db/V1000_7__fix_fk_cascade.sql rename to src/main/resources/db/40/V1000_7__fix_fk_cascade.sql diff --git a/src/main/resources/db/V1000_8__fix_userid_nullability.sql b/src/main/resources/db/40/V1000_8__fix_userid_nullability.sql similarity index 100% rename from src/main/resources/db/V1000_8__fix_userid_nullability.sql rename to src/main/resources/db/40/V1000_8__fix_userid_nullability.sql diff --git a/src/main/resources/db/V1000_9__fix_mai2_nullability.sql b/src/main/resources/db/40/V1000_9__fix_mai2_nullability.sql similarity index 100% rename from src/main/resources/db/V1000_9__fix_mai2_nullability.sql rename to src/main/resources/db/40/V1000_9__fix_mai2_nullability.sql From 2b26304d92630602c6f3a26a983fcb2110eea744 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Fri, 21 Mar 2025 16:41:33 -0400 Subject: [PATCH 2/9] [+] More events --- .../db/80/v1000_41__chusan_verse.sql | 157 ++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 src/main/resources/db/80/v1000_41__chusan_verse.sql diff --git a/src/main/resources/db/80/v1000_41__chusan_verse.sql b/src/main/resources/db/80/v1000_41__chusan_verse.sql new file mode 100644 index 00000000..86e7ef5c --- /dev/null +++ b/src/main/resources/db/80/v1000_41__chusan_verse.sql @@ -0,0 +1,157 @@ +INSERT INTO chusan_game_event (id, type, end_date, start_date, enable) +VALUES + (51,8,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (52,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (53,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (1021,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (3027,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (3217,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (3309,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (3412,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (3514,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (3623,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (3726,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (3808,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (3912,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (4010,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (4111,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (4210,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (4323,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (4513,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (4614,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (4710,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (4808,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (4909,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (4911,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (5026,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (5112,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (5216,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (5311,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (5360,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (5410,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (5513,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (5630,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (5708,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (5819,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (5920,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (6020,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (6130,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (6221,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (6319,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (6409,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (6511,9,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (11159,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (12580,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (12582,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (12584,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (12586,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (12587,8,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (12602,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (12611,12,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (12613,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (13060,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (13451,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (13453,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (13504,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (13506,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (13507,8,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (13513,12,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (13552,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (13553,8,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (13616,7,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (13617,7,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (13651,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15150,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15151,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15152,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15156,14,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15157,7,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15158,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15200,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15201,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15202,8,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15203,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15204,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15205,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15206,11,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15207,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15208,14,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15209,12,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15210,10,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15211,4,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15212,5,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15213,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15250,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15251,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15252,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15253,8,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15254,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15255,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15256,8,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15480,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15481,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15482,7,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15483,7,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (15560,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16100,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16101,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16102,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16103,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16104,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16105,8,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16106,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16107,16,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16108,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16109,4,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16110,5,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16111,11,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16150,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16151,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16152,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16153,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16154,8,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16155,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16156,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16157,8,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16158,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16159,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16160,8,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16161,14,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16162,10,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16163,11,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16164,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16165,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16200,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16201,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16202,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16203,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16204,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16205,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16206,14,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16207,5,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16208,4,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16209,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16250,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16251,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16252,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16253,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16254,8,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16255,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16256,12,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16257,11,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16258,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16300,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16301,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16302,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16303,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16304,2,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16305,8,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16306,1,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16307,16,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16308,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16309,10,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16310,5,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16311,4,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (16312,11,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (99000,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true), + (99001,3,'2029-01-01 00:00:00.000000','2019-01-01 00:00:00.000000',true); \ No newline at end of file From da648190db4130022e52ec5594eabf8d30b98475 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Fri, 21 Mar 2025 16:46:35 -0400 Subject: [PATCH 3/9] [F] Fix error display --- AquaNet/src/components/StatusOverlays.svelte | 3 +-- .../src/pages/Transfer/TransferServer.svelte | 23 +++++++++++-------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/AquaNet/src/components/StatusOverlays.svelte b/AquaNet/src/components/StatusOverlays.svelte index 2003e933..824b7499 100644 --- a/AquaNet/src/components/StatusOverlays.svelte +++ b/AquaNet/src/components/StatusOverlays.svelte @@ -3,14 +3,13 @@ - + -
+

{isSrc ? "Source" : "Target"} Server

- {#if expectedError} -
{expectedError}
+ {#if error} +
{error}
{/if} From cb039df33e1201ffdf4d9bd2f33082b2bc6d1b2c Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Fri, 21 Mar 2025 16:47:19 -0400 Subject: [PATCH 4/9] [+] Devnotes --- docs/dev/ongeki_dev_notes.md | 26 +++++++++ docs/dev/sinmai_dev_notes.md | 109 +++++++++++++++++++++++++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 docs/dev/ongeki_dev_notes.md diff --git a/docs/dev/ongeki_dev_notes.md b/docs/dev/ongeki_dev_notes.md new file mode 100644 index 00000000..eb0d6ad0 --- /dev/null +++ b/docs/dev/ongeki_dev_notes.md @@ -0,0 +1,26 @@ +# Ongeki dev notes + +## Item types + +| ItemKind | Name | +|----------|----------------| +| 1 | Card | +| 2 | NamePlate | +| 3 | Trophy | +| 4 | LimitBreakItem | +| 5 | AlmightyJewel | +| 6 | Money | +| 7 | Music | +| 8 | ProfileVoice | +| 9 | Present | +| 10 | ChapterJewel | +| 11 | GachaTicket | +| 12 | KaikaItem | +| 13 | ExpUpItem | +| 14 | IntimateUpItem | +| 15 | BookItem | +| 16 | SystemVoice | +| 17 | Costume | +| 18 | Medal | +| 19 | Attachment | +| 20 | UnlockItem | diff --git a/docs/dev/sinmai_dev_notes.md b/docs/dev/sinmai_dev_notes.md index a5c84083..63c41ef6 100644 --- a/docs/dev/sinmai_dev_notes.md +++ b/docs/dev/sinmai_dev_notes.md @@ -20,3 +20,112 @@ | 14 | Intimate Item | | 15 | Kaleidx Scope Key | +## Multiplayer + +### Party Host/Client/Member + +Manager.Party.Party/**Host.cs** : Host : +* TCP **Listen** 50100 (Accept into Member) +* UDP Broadcast 50100 + * Send: StartRecruit, FinishRecruit + +PartyLink/**Party.cs** : Party.Host : Exact same as Host.cs + +Manager.Party.Party/**Member.cs** : Member : +* TCP Connect 50100 + * Send: JoinResult, Kick, StartPlay, StartClientState, PartyMember{Info/State}, PartyPlayInfo, RequestMeasure + * Recv: RequestJoin, ClientState, ClientPlayInfo, UpdateMechaInfo, ResponseMeasure, FinishNews + +PartyLink/**Party.cs** : Party.Member : Exact same as Member.cs + +Manager.Party.Party/**Client.cs** : Client : +* UDP **Listen** 50100 + * Recv: StartRecruit, FinishRecruit +* TCP Connect 50100 + * Recv: JoinResult, Kick, StartPlay, StartClientState,PartyMember{Info/State}, PartyPlayInfo, RequestMeasure + * Send: RequestJoin, ClientState, ClientPlayInfo, UpdateMechaInfo, ResponseMeasure, FinishNews + +PartyLink/**Party.cs** : Party.Client : Exact same as Client.cs + +**Enums** +* **ClientStateID**: {Setup, Wait, Connect, Request, Joined, FinishSetting, ToReady, BeginPlay, AllBeginPlay, Ready, Sync, Play, FinishPlay, News, NewsEnd, Result, Disconnected, Finish, Error} +* **JoinResult**: {Success, Full, NoRecruit, Disconnect, AlreadyJoined, DifferentGroup, DifferentMusic, DifferentEventMode} + +**Models** +* **MechaInfo**: IsJoin (bool), IP Address, MusicID, Entries[2], UserIDs[2], Rating[2], ... +* **RecruitInfo**: MechaInfo, MusicID, GroupID, EventModeID, JoinNumber, PartyStance, Start time, Recv time +* **MemberPlayInfo**: IP Address, Rankings[2], Achieves[2], Combos[2], Miss[2], ... +* **ChainHistory**: PacketNo (int), Chain (int) + +**Commands** +* **StartRecruit/FinishRecruit**: RecruitInfo +* **JoinResult**: JoinResult (enum) +* **RequestJoin**: MechaInfo, GroupID, EventModeID +* **UpdateMechaInfo**: MechaInfo +* **Kick**: RecruitInfo, KickBy {Cancel, Start, Disconnect} +* **RequestMeasure/ResponseMeasure**: {} - Sync delay +* **StartPlay**: MaxMeasure (long), MyMeasure (long) - Sync delay +* **StartClientState**: ClientStateID (enum) +* **ClientState**: ClientStateID (enum) +* **PartyMemberInfo**: MechaInfo[2] +* **PartyMemberState**: ClientStateID[2] +* **PartyPlayInfo**: MemberPlayInfo[2], ChainHistory[10], Chain (int), ChainMiss (int), MaxChain (int), IsFullChain (bool), CalcStatus (int) +* **ClientPlayInfo**: IP Address, Count, IsValids[2], Achieves[2], Combos[2], Miss[2], ... +* **FinishNews**: IP Address, IsValids[2], GaugeClears[2], GaugeStockNums[2] + +### Setting Host/Client/Member + +> This might be for synchronizing event settings across different cabs, +> I'm not sure if this is relevant for multiplayer. + +PartyLink/**Setting.cs** : Setting.**Host** : +* TCP **Listen** 50101 (Accept into Setting.Member) +* UDP Broadcast 50101 + * Send: SettingHostAddress +* UDP **Listen** 50101 + * Recv: SettingHostAddress (Check duplicate host) + +PartyLink/**Setting.cs** : Setting.**Client** : +* TCP Connect 50101 + * Send: SettingRequest + * Recv: SettingResponse, HeartBeat{} +* UDP **Listen** 50101 + * Recv: SettingHostAddress + +PartyLink/**Setting.cs** : Setting.**Member** : +* TCP Connect 50101 + * Recv: SettingRequest, HeartBeat{} + * Send: SettingResponse, HeartBeat{} + +**Models** +* **SettingHostAddress**: IP Address (u32), Group (int) +* **SettingRequest**: Group (int) +* **SettingResponse**: Group (int), Data (isEventMode, eventModeMusicCount, memberNumber) + +### Advertise + +> For finding IP addresses of other cabs and checking their latency. + +PartyLink/**Advertise.cs** : Advertise.Manager : +* UDP **Listen** 50102 + * Recv: AdvertiseRequest, AdvertiseResponse, AdvertiseGo +* UDP Broadcast 50102 + * Send: AdvertiseRequest, AdvertiseResponse, AdvertiseGo + +**Models** +* **AdvertiseRequest**: IP Address (u32), Group (int), Kind (int) +* **AdvertiseResponse**: IP Address (u32), Group (int), Kind (int) +* **AdvertiseGo**: IP Address (u32), Group (int), Kind (int), MaxUsec (long), MyUsec (long) + +!! sendTo is not necessarily broadcast !! + +### DeliveryChecker + +PartyLink/**DeliveryChecker** : DeliveryChecker.Manager : +* UDP **Listen** 50103 + * Recv: AdvocateDelivery +* UDP Broadcast 50103 + * Send: AdvocateDelivery + +**Models** +* **AdvocateDelivery**: IP Address (u32) From 02b4a70dd21b81eaae826c12f998ebb42098dd29 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Fri, 21 Mar 2025 16:47:43 -0400 Subject: [PATCH 5/9] [+] HTTP timeout --- src/main/java/ext/Http.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/ext/Http.kt b/src/main/java/ext/Http.kt index d0c73fe7..44b7f60e 100644 --- a/src/main/java/ext/Http.kt +++ b/src/main/java/ext/Http.kt @@ -5,12 +5,13 @@ import java.net.URI import java.net.http.HttpClient import java.net.http.HttpRequest import java.net.http.HttpResponse +import java.time.Duration val client = HttpClient.newBuilder().build() fun HttpRequest.Builder.send() = client.send(this.build(), HttpResponse.BodyHandlers.ofByteArray()) fun HttpRequest.Builder.header(pair: Pair) = this.header(pair.first.toString(), pair.second.toString()) -fun String.request() = HttpRequest.newBuilder(URI.create(this)) +fun String.request() = HttpRequest.newBuilder(URI.create(this)).timeout(Duration.ofSeconds(10)) fun HttpRequest.Builder.post(body: Any? = null) = this.POST(when (body) { is ByteArray -> HttpRequest.BodyPublishers.ofByteArray(body) From 166fd9e6b73190b81cf44c211da542b34a810ee2 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Fri, 21 Mar 2025 16:52:54 -0400 Subject: [PATCH 6/9] Update src/main/java/ext/Http.kt Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> --- src/main/java/ext/Http.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ext/Http.kt b/src/main/java/ext/Http.kt index 44b7f60e..b01c7c36 100644 --- a/src/main/java/ext/Http.kt +++ b/src/main/java/ext/Http.kt @@ -17,7 +17,7 @@ fun HttpRequest.Builder.post(body: Any? = null) = this.POST(when (body) { is ByteArray -> HttpRequest.BodyPublishers.ofByteArray(body) is String -> HttpRequest.BodyPublishers.ofString(body) is HttpRequest.BodyPublisher -> body - else -> throw Exception("Unsupported body type") + else -> throw IllegalArgumentException("Unsupported body type") }).send() From 2def7a8861da54f114dde5a6d417e4a95c19fc02 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Fri, 21 Mar 2025 16:53:35 -0400 Subject: [PATCH 7/9] Update src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt Co-authored-by: sourcery-ai[bot] <58596630+sourcery-ai[bot]@users.noreply.github.com> --- src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt b/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt index ad4d5559..570514c6 100644 --- a/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt +++ b/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt @@ -38,9 +38,6 @@ class AllNetClient(val dns: String, val keychip: String, val game: String, val v "ip" to "127.0.0.1", "firm_ver" to "60001", "boot_ver" to "0000", "encode" to "UTF-8", "format_ver" to "3", "hops" to "1", "token" to "2864179931" ))) - ?.also { - println(it) - } ?.decodeAllNetResp()?.get("uri") ?: throw Exception("PowerOn Failed: No game URL returned") } From bfdcdc30d6e26a1a989df9a143a32ed7df75e865 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Fri, 21 Mar 2025 16:58:00 -0400 Subject: [PATCH 8/9] [F] Fix dns --- src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt | 3 ++- src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt b/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt index 570514c6..00b247cc 100644 --- a/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt +++ b/src/main/java/icu/samnyan/aqua/net/transfer/AllNetClient.kt @@ -3,6 +3,7 @@ package icu.samnyan.aqua.net.transfer import ext.header import ext.post import ext.request +import java.net.URI import icu.samnyan.aqua.sega.aimedb.AimeDbClient import icu.samnyan.aqua.sega.allnet.AllNetBillingDecoder import icu.samnyan.aqua.sega.allnet.AllNetBillingDecoder.decodeAllNetResp @@ -23,7 +24,7 @@ class AllNetClient(val dns: String, val keychip: String, val game: String, val v if (keychip.length == 11) keychip else keychip.substring(0, 4) + keychip.substring(5, 12) } - val aime by lazy { AimeDbClient(game, keychipShort, dns.substringAfter("://").substringBefore(":").substringBefore("/")) } + val aime by lazy { AimeDbClient(game, keychipShort, URI(dns).host) } // Send AllNet PowerOn request to obtain game URL val gameUrl by lazy { diff --git a/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt b/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt index 87564ba9..5a56c83a 100644 --- a/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt +++ b/src/main/java/icu/samnyan/aqua/net/transfer/DataBroker.kt @@ -164,6 +164,4 @@ class OngekiDataBroker(allNet: AllNetClient, log: (String) -> Unit): DataBroker( userKopList = "GetUserKopApi".get("userKopList", userId) }.toJson() } -} - } \ No newline at end of file From 8578f6e048f6dd078f733486ea00a6359f9bd7e7 Mon Sep 17 00:00:00 2001 From: Azalea <22280294+hykilpikonna@users.noreply.github.com> Date: Fri, 21 Mar 2025 18:30:18 -0400 Subject: [PATCH 9/9] [+] i18n --- AquaNet/src/libs/i18n/en_ref.ts | 32 ++++++++++++++++- AquaNet/src/libs/i18n/zh.ts | 36 ++++++++++++++++++- AquaNet/src/pages/Transfer/Transfer.svelte | 22 ++++++------ .../src/pages/Transfer/TransferServer.svelte | 25 ++++++------- 4 files changed, 90 insertions(+), 25 deletions(-) diff --git a/AquaNet/src/libs/i18n/en_ref.ts b/AquaNet/src/libs/i18n/en_ref.ts index 3d95b0df..c2de0d18 100644 --- a/AquaNet/src/libs/i18n/en_ref.ts +++ b/AquaNet/src/libs/i18n/en_ref.ts @@ -238,9 +238,39 @@ export const EN_REF_MAI_PHOTO = { 'maiphoto.none': 'No photo found. You can upload photo by clicking upload at the end of each game session.', } +export const EN_REF_AQUATRANS = { + 'trans.title': '🏳️‍⚧️ AquaTrans™ Data Transfer', + 'trans.confirm.unbackuped.title': 'Confirm transfer', + 'trans.confirm.unbackuped.msg': "It seems like you haven't backed up your destination data. Are you sure you want to proceed? (This will overwrite your destination server's data)", + 'trans.confirm.untested.title': 'Error', + 'trans.confirm.untested.msg': "It seems like you haven't tested both connections yet. Please test the connections first.", + 'trans.confirm.done.title': 'Done!', + 'trans.confirm.done.msg': 'Transfer completed successfully! Your data on ${dst} is overwritten with your data from ${src}.', + 'trans.alert.in-progress': "Transfer already in progress!", + 'trans.prompt-html': ` +

👋 Welcome to the AquaTrans™ server data transfer tool!

+

You can use this to export data from any server, and input data into any server using the connection credentials (card number, server address, and keychip id).

+

This tool will simulate a game client and pull your data from the source server, and push your data to the destination server.

+

Please fill out the info below to get started!

+ `, + 'trans.error.empty': 'Please fill out all fields.', + 'trans.error.untested': 'Please test the connections first.', + 'trans.success.import': 'Data imported successfully!', + 'trans.source.title': 'Source Server', + 'trans.target.title': 'Destination Server', + 'trans.field.addr': 'Server Address', + 'trans.field.keychip': 'Keychip ID', + 'trans.field.game': 'Game', + 'trans.field.version': 'Version', + 'trans.field.card': 'Card Number', + 'trans.btn.test': 'Test Connection', + 'trans.btn.export': 'Export Data', + 'trans.btn.import': 'Import Data', +} + export const EN_REF = { ...EN_REF_USER, ...EN_REF_Welcome, ...EN_REF_GENERAL, ...EN_REF_LEADERBOARD, ...EN_REF_HOME, ...EN_REF_SETTINGS, ...EN_REF_USERBOX, - ...EN_REF_MAI_PHOTO + ...EN_REF_MAI_PHOTO, ...EN_REF_AQUATRANS } export type LocalizedMessages = typeof EN_REF diff --git a/AquaNet/src/libs/i18n/zh.ts b/AquaNet/src/libs/i18n/zh.ts index 17f37256..8fe9e851 100644 --- a/AquaNet/src/libs/i18n/zh.ts +++ b/AquaNet/src/libs/i18n/zh.ts @@ -1,4 +1,5 @@ import { + EN_REF_AQUATRANS, EN_REF_GENERAL, EN_REF_HOME, EN_REF_LEADERBOARD, @@ -242,5 +243,38 @@ export const zhMaiPhoto: typeof EN_REF_MAI_PHOTO = { 'maiphoto.none': '还没有图片哦~ 可以在每次游戏结束的时候点击上传来上传照片。', } +export const zhAquaTrans: typeof EN_REF_AQUATRANS = { + 'trans.title': '🏳️‍⚧️ AquaTrans™ 数据迁移工具', + 'trans.confirm.unbackuped.title': '确认迁移', + 'trans.confirm.unbackuped.msg': '似乎还没有备份目标服务器的数据,真的要继续吗?(推荐先备份一下,因为迁移的时候会覆盖数据)', + 'trans.confirm.untested.title': '不太聪明喵', + 'trans.confirm.untested.msg': '在两个服务器上都测试完连接之后才能进行数据迁移哦!', + 'trans.confirm.done.title': '完成!', + 'trans.confirm.done.msg': '数据迁移成功!在 ${dst} 上的数据已被来自 ${src} 的数据覆盖。', + 'trans.alert.in-progress': '在迁移了在迁移了', + 'trans.prompt-html': ` +

👋 欢迎使用 AquaTrans™ 服务器游玩数据迁移工具!

+

这个工具可以导出任意服务器的数据,并使用连接凭证(卡号、服务器地址和 Keychip ID)将数据导入任何其他服务器。

+

我将模拟游戏客户端,从源服务器拉取游戏数据并推送到目标服务器。

+

填写下面的表格开始迁移吧!

+ `, + 'trans.error.empty': '请填写所有字段。', + 'trans.error.untested': '请先进行连接测试。', + 'trans.success.import': '数据导入成功!', + 'trans.source.title': '源服务器', + 'trans.target.title': '目标服务器', + 'trans.field.addr': '服务器地址', + 'trans.field.keychip': '狗号', + 'trans.field.game': '游戏', + 'trans.field.version': '版本', + 'trans.field.card': '卡号', + 'trans.btn.test': '测试连接', + 'trans.btn.export': '导出数据', + 'trans.btn.import': '导入数据', +} + + export const ZH = { ...zhUser, ...zhWelcome, ...zhGeneral, - ...zhLeaderboard, ...zhHome, ...zhSettings, ...zhUserbox, ...zhMaiPhoto } + ...zhLeaderboard, ...zhHome, ...zhSettings, ...zhUserbox, ...zhMaiPhoto, + ...zhAquaTrans +} diff --git a/AquaNet/src/pages/Transfer/Transfer.svelte b/AquaNet/src/pages/Transfer/Transfer.svelte index 29b7d8b5..a9d3b0e1 100644 --- a/AquaNet/src/pages/Transfer/Transfer.svelte +++ b/AquaNet/src/pages/Transfer/Transfer.svelte @@ -40,16 +40,19 @@ srcEl.pull() .then(() => dstEl.push(srcExportedData)) .then(() => confirm = { - title: "Done!", - message: `Transfer completed successfully! Your data on ${dst.dns} is overwritten with your data from ${src.dns}.` + title: t('trans.confirm.done.title'), + message: t('trans.confirm.done.msg', { src: src.dns, dst: dst.dns }) }) .catch(e => error = e) .finally(() => loading = false) } function startTransfer() { - if (!(srcTested && dstTested)) return alert("Please test both servers first!") - if (loading) return alert("Transfer already in progress!") + if (!(srcTested && dstTested)) return confirm = { + title: t('trans.confirm.untested.title'), + message: t('trans.confirm.untested.msg') + } + if (loading) return alert(t('trans.alert.in-progress')) console.log("Starting transfer...") loading = true @@ -57,8 +60,8 @@ // Ask user to make sure to backup their data confirm = { - title: "Confirm transfer", - message: "It seems like you haven't backed up your destination data. Are you sure you want to proceed? (This will overwrite your destination server's data)", + title: t('trans.confirm.unbackuped.title'), + message: t('trans.confirm.unbackuped.msg'), dangerous: true, confirm: actuallyStartTransfer, cancel: () => { loading = false } @@ -72,7 +75,7 @@
-

🏳️‍⚧️ AquaTrans™ Data Transfer?

+

{t('trans.title')}