summaryrefslogtreecommitdiff
path: root/src/main/java/net/uomc/mineshaft/SavedStat.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/uomc/mineshaft/SavedStat.java')
-rw-r--r--src/main/java/net/uomc/mineshaft/SavedStat.java81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/main/java/net/uomc/mineshaft/SavedStat.java b/src/main/java/net/uomc/mineshaft/SavedStat.java
new file mode 100644
index 0000000..01718d5
--- /dev/null
+++ b/src/main/java/net/uomc/mineshaft/SavedStat.java
@@ -0,0 +1,81 @@
+package net.uomc.mineshaft;
+
+import java.sql.SQLException;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import com.mouldycheerio.dbot.util.DatabaseUtils;
+
+import net.dv8tion.jda.api.entities.Guild;
+import net.dv8tion.jda.api.entities.Member;
+
+public class SavedStat {
+ private long defaultValue = 0l;
+ private String dbPath;
+ private String tableName;
+
+ public SavedStat(String dbPath, String tableName) {
+ this.dbPath = dbPath;
+ this.tableName = tableName;
+ createTable();
+ }
+
+ private void createTable() {
+ try {
+ DatabaseUtils.createSimpleKVtable(dbPath, tableName);
+ } catch (SQLException e) {
+ }
+ }
+
+ public void set(Member member, long value) {
+ try {
+ DatabaseUtils.putInKVtable(dbPath, tableName, member.getId() + ":" + member.getGuild().getId(), value);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public long get(String member, String guild) {
+ try {
+ return DatabaseUtils.getInKVtable(dbPath, tableName, member + ":" + guild);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return defaultValue;
+ }
+
+ public long get(Member member) {
+ return get(member.getId(), member.getGuild().getId());
+ }
+
+ public List<String> getMembers(Guild guild) {
+ return getMembersGuilds().stream().filter(m -> guild.getId().equals(m.split(":")[1])).map(m -> m.split(":")[0]).collect(Collectors.toList());
+ }
+
+ public List<String> getMembersGuilds() {
+ try {
+ return DatabaseUtils.listKeys(dbPath, tableName);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return Collections.emptyList();
+ }
+
+ public long getDefaultValue() {
+ return defaultValue;
+ }
+
+ public void setDefaultValue(long defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ public void increment(Member member, long amount) {
+ set(member, get(member) + amount);
+ }
+
+ public void increment(Member member) {
+ set(member, get(member) + 1);
+ }
+
+}