From 47e97c27aa87d56f19e793aa1544f2159cc0f67a Mon Sep 17 00:00:00 2001 From: Napster Date: Sun, 10 Dec 2023 13:11:37 +0100 Subject: [PATCH] Move app info cache to service, refresh instead of expire --- src/main/java/space/npstr/icu/Launcher.java | 9 --------- .../java/space/npstr/icu/discord/AdminService.java | 10 ++++++++-- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/main/java/space/npstr/icu/Launcher.java b/src/main/java/space/npstr/icu/Launcher.java index a77f8e8..d55025d 100644 --- a/src/main/java/space/npstr/icu/Launcher.java +++ b/src/main/java/space/npstr/icu/Launcher.java @@ -17,15 +17,11 @@ package space.npstr.icu; -import com.github.benmanes.caffeine.cache.Cache; -import com.github.benmanes.caffeine.cache.Caffeine; import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.concurrent.CompletionException; -import java.util.concurrent.TimeUnit; import net.dv8tion.jda.api.JDAInfo; -import net.dv8tion.jda.api.entities.ApplicationInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.SpringApplication; @@ -51,11 +47,6 @@ public class Launcher { private final ShardManagerManager shardManagerManager; - //use something constant as the key, like Main.class - public static final Cache APP_INFO = Caffeine.newBuilder() - .expireAfterWrite(1, TimeUnit.HOURS) - .build(); - public static void main(String[] args) { //just post the info to the console if (args.length > 0 && diff --git a/src/main/java/space/npstr/icu/discord/AdminService.java b/src/main/java/space/npstr/icu/discord/AdminService.java index b35279c..44139e3 100644 --- a/src/main/java/space/npstr/icu/discord/AdminService.java +++ b/src/main/java/space/npstr/icu/discord/AdminService.java @@ -17,12 +17,14 @@ package space.npstr.icu.discord; +import com.github.benmanes.caffeine.cache.Cache; +import com.github.benmanes.caffeine.cache.Caffeine; +import java.util.concurrent.TimeUnit; import net.dv8tion.jda.api.Permission; import net.dv8tion.jda.api.entities.ApplicationInfo; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.User; import org.springframework.stereotype.Service; -import space.npstr.icu.Launcher; import space.npstr.icu.db.entities.GuildSettingsRepository; @Service @@ -30,12 +32,16 @@ public class AdminService { private final GuildSettingsRepository guildSettingsRepo; + private final Cache applicationInfoCache = Caffeine.newBuilder() + .refreshAfterWrite(1, TimeUnit.HOURS) + .build(); + public AdminService(GuildSettingsRepository guildSettingsRepo) { this.guildSettingsRepo = guildSettingsRepo; } public boolean isBotOwner(User user) { - ApplicationInfo appInfo = Launcher.APP_INFO.get(Launcher.class, __ -> user.getJDA().retrieveApplicationInfo().complete()); + ApplicationInfo appInfo = applicationInfoCache.get("foo", __ -> user.getJDA().retrieveApplicationInfo().complete()); return appInfo != null && appInfo.getOwner().getIdLong() == user.getIdLong(); }