diff --git a/db/migration/V0069__Add_mhc_plus_plus_club_tag.SQL b/db/migration/V0069__Add_mhc_plus_plus_club_tag.SQL new file mode 100644 index 000000000..b981ae54b --- /dev/null +++ b/db/migration/V0069__Add_mhc_plus_plus_club_tag.SQL @@ -0,0 +1 @@ +ALTER TYPE "Tag" ADD VALUE 'MHCPlusPlus'; diff --git a/db/migration/V0070__Add_mhc_plus_plus_to_discord_club.SQL b/db/migration/V0070__Add_mhc_plus_plus_to_discord_club.SQL new file mode 100644 index 000000000..d86af9212 --- /dev/null +++ b/db/migration/V0070__Add_mhc_plus_plus_to_discord_club.SQL @@ -0,0 +1,64 @@ +INSERT INTO "DiscordClub" + (id, name, description, tag) +VALUES + (gen_random_uuid(), 'MHC++', NULL, 'MHCPlusPlus'); + + +DO $$ +BEGIN + CASE current_database() + WHEN 'codebloom-prod' THEN + WITH CLUB AS ( + SELECT + * + FROM + "DiscordClub" + WHERE + name = 'MHC++' + ) + INSERT INTO "DiscordClubMetadata" + (id, "guildId", "leaderboardChannelId", "discordClubId") + SELECT + gen_random_uuid(), + '1048355383728672829', + '1074033436404228206', + CLUB.id + FROM CLUB; + + WHEN 'codebloom-stg' THEN + WITH CLUB AS ( + SELECT + * + FROM + "DiscordClub" + WHERE + name = 'MHC++' + ) + INSERT INTO "DiscordClubMetadata" + (id, "guildId", "leaderboardChannelId", "discordClubId") + SELECT + gen_random_uuid(), + '1389762654452580373', + '1417161536014778388', + CLUB.id + FROM CLUB; + + ELSE + WITH CLUB AS ( + SELECT + * + FROM + "DiscordClub" + WHERE + name = 'MHC++' + ) + INSERT INTO "DiscordClubMetadata" + (id, "guildId", "leaderboardChannelId", "discordClubId") + SELECT + gen_random_uuid(), + '1389762654452580373', + '1463703700697518113', + CLUB.id + FROM CLUB; + END CASE; +END $$; diff --git a/js/public/brands/Mhcpp_logo.png b/js/public/brands/Mhcpp_logo.png new file mode 100644 index 000000000..2df2a5395 Binary files /dev/null and b/js/public/brands/Mhcpp_logo.png differ diff --git a/js/src/lib/api/utils/metadata/tag/index.ts b/js/src/lib/api/utils/metadata/tag/index.ts index 3430cf31c..b58f8af3c 100644 --- a/js/src/lib/api/utils/metadata/tag/index.ts +++ b/js/src/lib/api/utils/metadata/tag/index.ts @@ -82,6 +82,13 @@ export const TAG_METADATA_LIST: Record = { icon: "/brands/BMCC_logo.png", alt: "BMCC Logo", }, + MhcPlusPlus: { + shortName: "MHC++", + name: "The MHC++ Club | Macaulay Hunter College", + apiKey: "mhcplusplus", + icon: "/brands/Mhcpp_logo.png", + alt: "MHC++ Logo", + }, } as const; export const UNUSED_TAGS: Tag[] = [Tag.Gwc]; diff --git a/src/main/java/org/patinanetwork/codebloom/common/db/models/usertag/Tag.java b/src/main/java/org/patinanetwork/codebloom/common/db/models/usertag/Tag.java index 2457deb00..6d4eac63a 100644 --- a/src/main/java/org/patinanetwork/codebloom/common/db/models/usertag/Tag.java +++ b/src/main/java/org/patinanetwork/codebloom/common/db/models/usertag/Tag.java @@ -19,7 +19,8 @@ public enum Tag { Ccny("City College of New York"), Columbia("Columbia University"), Cornell("Cornell University"), - Bmcc("Borough of Manhattan Community College"); + Bmcc("Borough of Manhattan Community College"), + MhcPlusPlus("MHC++"); /** Only applies to school tags. */ // CHECKSTYLE:OFF diff --git a/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterGenerator.java b/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterGenerator.java index 0eeb7a8e2..4af02615d 100644 --- a/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterGenerator.java +++ b/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterGenerator.java @@ -22,6 +22,7 @@ public static List> generateAllSupportedTagT list.add(Pair.of(withOnlyTrue(opt -> opt.columbia(true)), Tag.Columbia)); list.add(Pair.of(withOnlyTrue(opt -> opt.cornell(true)), Tag.Cornell)); list.add(Pair.of(withOnlyTrue(opt -> opt.bmcc(true)), Tag.Bmcc)); + list.add(Pair.of(withOnlyTrue(opt -> opt.bmcc(true)), Tag.MhcPlusPlus)); return list; } @@ -39,6 +40,7 @@ public static LeaderboardFilterOptions.LeaderboardFilterOptionsBuilder builderWi case Columbia -> LeaderboardFilterOptions.builder().columbia(true); case Cornell -> LeaderboardFilterOptions.builder().cornell(true); case Bmcc -> LeaderboardFilterOptions.builder().bmcc(true); + case MhcPlusPlus -> LeaderboardFilterOptions.builder().mhcplusplus(true); }; } diff --git a/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterOptions.java b/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterOptions.java index f937c4768..f8697111a 100644 --- a/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterOptions.java +++ b/src/main/java/org/patinanetwork/codebloom/common/db/repos/leaderboard/options/LeaderboardFilterOptions.java @@ -55,6 +55,9 @@ public class LeaderboardFilterOptions { @Builder.Default private final boolean bmcc = false; + @Builder.Default + private final boolean mhcplusplus = false; + public static final LeaderboardFilterOptions DEFAULT = LeaderboardFilterOptions.builder().build(); }