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 getMembers(Guild guild) { return getMembersGuilds().stream().filter(m -> guild.getId().equals(m.split(":")[1])).map(m -> m.split(":")[0]).collect(Collectors.toList()); } public List 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); } }