Removed cache table
Added account_roles table Added function to add roles to a discord link user
This commit is contained in:
parent
5f8dc66320
commit
635e8884ef
|
|
@ -1,7 +1,7 @@
|
||||||
package com.alttd.proxydiscordlink.database;
|
package com.alttd.proxydiscordlink.database;
|
||||||
|
|
||||||
|
import com.alttd.proxydiscordlink.bot.objects.DiscordRole;
|
||||||
import com.alttd.proxydiscordlink.objects.DiscordLinkPlayer;
|
import com.alttd.proxydiscordlink.objects.DiscordLinkPlayer;
|
||||||
import com.alttd.proxydiscordlink.util.ALogger;
|
|
||||||
import com.alttd.proxydiscordlink.util.Utilities;
|
import com.alttd.proxydiscordlink.util.Utilities;
|
||||||
import com.velocitypowered.api.proxy.Player;
|
import com.velocitypowered.api.proxy.Player;
|
||||||
|
|
||||||
|
|
@ -9,6 +9,7 @@ import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class Database {
|
public class Database {
|
||||||
|
|
@ -25,58 +26,52 @@ public class Database {
|
||||||
"discord_id VARCHAR(256) NOT NULL, " +
|
"discord_id VARCHAR(256) NOT NULL, " +
|
||||||
"PRIMARY KEY(player_uuid)" +
|
"PRIMARY KEY(player_uuid)" +
|
||||||
");";
|
");";
|
||||||
String cache = "CREATE TABLE IF NOT EXISTS cache (" +
|
String sync_roles = "CREATE TABLE IF NOT EXISTS account_roles (" +
|
||||||
"player_uuid VARCHAR(36) NOT NULL, " +
|
"uuid VARCHAR(36) NOT NULL, " +
|
||||||
"player_name VARCHAR(16) NOT NULL, " +
|
"role_name VARCHAR(32) NOT NULL, " +
|
||||||
"player_nickname VARCHAR(16), " +
|
"PRIMARY KEY(uuid, role_name)" +
|
||||||
"player_rank VARCHAR(256), " +
|
|
||||||
"player_isdonor BIT NOT NULL, " +
|
|
||||||
"code VARCHAR(6) NOT NULL, " +
|
|
||||||
"PRIMARY KEY(player_uuid)" +
|
|
||||||
");";
|
");";
|
||||||
String updates = "CREATE TABLE IF NOT EXISTS `updates` (" +
|
String updates = "CREATE TABLE IF NOT EXISTS `updates` (" +
|
||||||
"`player_uuid` varchar(36) NOT NULL, " +
|
"`player_uuid` varchar(36) NOT NULL, " +
|
||||||
"`player_name` varchar(16) NOT NULL, " +
|
"`player_name` varchar(16) NOT NULL, " +
|
||||||
"`player_nickname` varchar(16) DEFAULT NULL, " +
|
"`player_nickname` varchar(16) DEFAULT NULL, " +
|
||||||
"`player_rank` varchar(256) DEFAULT NULL, " +
|
"`player_rank` varchar(256) DEFAULT NULL, " +
|
||||||
"`player_isdonor` bit(1) DEFAULT b'0', " +
|
|
||||||
"`player_isnitro` bit(1) DEFAULT b'0', " +
|
|
||||||
"`discord_username` varchar(256) DEFAULT NULL, " +
|
"`discord_username` varchar(256) DEFAULT NULL, " +
|
||||||
"`discord_id` varchar(256) DEFAULT NULL, " +
|
"`discord_id` varchar(256) DEFAULT NULL, " +
|
||||||
"`discord_update` bit(2) NOT NULL DEFAULT b'0', " +
|
|
||||||
"`minecraft_update` bit(2) NOT NULL DEFAULT b'0', " +
|
|
||||||
"PRIMARY KEY (`player_uuid`)" +
|
"PRIMARY KEY (`player_uuid`)" +
|
||||||
")";
|
")";
|
||||||
try {
|
try {
|
||||||
Statement statement = DatabaseConnection.getConnection().createStatement();
|
Statement statement = DatabaseConnection.getConnection().createStatement();
|
||||||
statement.execute(linked_accounts);
|
statement.execute(linked_accounts);
|
||||||
statement.execute(cache);
|
statement.execute(sync_roles);
|
||||||
statement.execute(updates);
|
statement.execute(updates);
|
||||||
} catch (SQLException var3) {
|
} catch (SQLException var3) {
|
||||||
var3.printStackTrace();
|
var3.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void syncPlayer(DiscordLinkPlayer player) {
|
public void syncPlayer(DiscordLinkPlayer player) { //TODO make discord_id unique
|
||||||
try {
|
try {
|
||||||
String playerNickname = getNick(player.getUuid());
|
String playerNickname = getNick(player.getUuid());
|
||||||
String sql = "INSERT INTO updates " +
|
String sql = "INSERT INTO updates " +
|
||||||
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, 0, 1) " +
|
"VALUES (?, ?, ?, ?, ?, ?) " +
|
||||||
"ON DUPLICATE KEY UPDATE player_uuid = ?";
|
"ON DUPLICATE KEY UPDATE player_name = ?" +
|
||||||
|
"ON DUPLICATE KEY UPDATE player_nickname = ?" +
|
||||||
|
"ON DUPLICATE KEY UPDATE player_rank = ?" +
|
||||||
|
"ON DUPLICATE KEY UPDATE discord_username = ?";
|
||||||
|
|
||||||
PreparedStatement statement = DatabaseConnection.getConnection().prepareStatement(sql);
|
PreparedStatement statement = DatabaseConnection.getConnection().prepareStatement(sql);
|
||||||
|
|
||||||
String uuid = player.getUuid().toString();
|
|
||||||
|
|
||||||
statement.setString(1, player.getUuid().toString());
|
statement.setString(1, player.getUuid().toString());
|
||||||
statement.setString(2, player.getUsername());
|
statement.setString(2, player.getUsername());
|
||||||
statement.setString(3, playerNickname);
|
statement.setString(3, playerNickname);
|
||||||
statement.setString(4, Utilities.getRankName(player.getUuid()));
|
statement.setString(4, Utilities.getRankName(player.getUuid()));
|
||||||
statement.setInt(5, player.isDonor() ? 1 : 0);
|
statement.setString(5, player.getDiscordUsername());
|
||||||
statement.setInt(6, player.isNitro() ? 1 : 0);
|
statement.setLong(6, player.getUserId());
|
||||||
statement.setString(7, player.getDiscordUsername());
|
statement.setString(7, player.getUsername());
|
||||||
statement.setLong(8, player.getUserId());
|
statement.setString(8, playerNickname);
|
||||||
statement.setString(9, uuid);
|
statement.setString(9, Utilities.getRankName(player.getUuid()));
|
||||||
|
statement.setString(10, player.getDiscordUsername());
|
||||||
|
|
||||||
statement.execute();
|
statement.execute();
|
||||||
} catch (SQLException exception) {
|
} catch (SQLException exception) {
|
||||||
|
|
@ -155,6 +150,7 @@ public class Database {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Should only be used internally
|
* Should only be used internally
|
||||||
|
*
|
||||||
* @param user_id gets the player with this user id
|
* @param user_id gets the player with this user id
|
||||||
* @return null or the requested DiscordLinkPlayer
|
* @return null or the requested DiscordLinkPlayer
|
||||||
*/
|
*/
|
||||||
|
|
@ -177,6 +173,7 @@ public class Database {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Should only be used internally
|
* Should only be used internally
|
||||||
|
*
|
||||||
* @param uuid gets the player with this uuid
|
* @param uuid gets the player with this uuid
|
||||||
* @return null or the requested DiscordLinkPlayer
|
* @return null or the requested DiscordLinkPlayer
|
||||||
*/
|
*/
|
||||||
|
|
@ -195,15 +192,33 @@ public class Database {
|
||||||
|
|
||||||
private DiscordLinkPlayer getPlayer(ResultSet resultSet) throws SQLException {
|
private DiscordLinkPlayer getPlayer(ResultSet resultSet) throws SQLException {
|
||||||
if (resultSet.next()) {
|
if (resultSet.next()) {
|
||||||
return new DiscordLinkPlayer(
|
DiscordLinkPlayer discordLinkPlayer = new DiscordLinkPlayer(
|
||||||
resultSet.getLong("discord_id"),
|
resultSet.getLong("discord_id"),
|
||||||
UUID.fromString(resultSet.getString("player_uuid")),
|
UUID.fromString(resultSet.getString("player_uuid")),
|
||||||
resultSet.getString("player_name"),
|
resultSet.getString("player_name"),
|
||||||
resultSet.getString("discord_username"),
|
resultSet.getString("discord_username"),
|
||||||
resultSet.getInt("player_isdonor") == 1,
|
new ArrayList<>()
|
||||||
resultSet.getInt("player_isnitro") == 1
|
|
||||||
);
|
);
|
||||||
|
addRoles(discordLinkPlayer);
|
||||||
|
return discordLinkPlayer;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void addRoles(DiscordLinkPlayer discordLinkPlayer) {
|
||||||
|
try {
|
||||||
|
PreparedStatement statement = DatabaseConnection.getConnection()
|
||||||
|
.prepareStatement("SELECT * FROM discord_link_roles WHERE uuid = ?");
|
||||||
|
|
||||||
|
statement.setString(1, discordLinkPlayer.getUuid().toString());
|
||||||
|
ResultSet resultSet = statement.getResultSet();
|
||||||
|
|
||||||
|
while (resultSet.next())
|
||||||
|
{
|
||||||
|
discordLinkPlayer.getRoles().add(resultSet.getString("internal_role_name"));
|
||||||
|
}
|
||||||
|
} catch (SQLException exception) {
|
||||||
|
exception.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user