mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-03-02 11:11:21 +01:00
Refactored UsersTable#isRegistered to a query
This commit is contained in:
parent
966b204ca1
commit
8a15e03096
@ -18,6 +18,7 @@ package com.djrapitops.plan.command.commands;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.database.DBOpException;
|
||||
import com.djrapitops.plan.db.access.queries.OptionalFetchQueries;
|
||||
import com.djrapitops.plan.db.access.queries.PlayerFetchQueries;
|
||||
import com.djrapitops.plan.system.database.DBSystem;
|
||||
import com.djrapitops.plan.system.info.connection.ConnectionSystem;
|
||||
import com.djrapitops.plan.system.locale.Locale;
|
||||
@ -97,19 +98,19 @@ public class InspectCommand extends CommandNode {
|
||||
private void runInspectTask(String playerName, Sender sender) {
|
||||
processing.submitNonCritical(() -> {
|
||||
try {
|
||||
UUID uuid = uuidUtility.getUUIDOf(playerName);
|
||||
if (uuid == null) {
|
||||
UUID playerUUID = uuidUtility.getUUIDOf(playerName);
|
||||
if (playerUUID == null) {
|
||||
sender.sendMessage(locale.getString(CommandLang.FAIL_USERNAME_NOT_VALID));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!dbSystem.getDatabase().check().isPlayerRegistered(uuid)) {
|
||||
if (!dbSystem.getDatabase().query(PlayerFetchQueries.isPlayerRegistered(playerUUID))) {
|
||||
sender.sendMessage(locale.getString(CommandLang.FAIL_USERNAME_NOT_KNOWN));
|
||||
return;
|
||||
}
|
||||
|
||||
checkWebUserAndNotify(sender);
|
||||
processing.submit(processorFactory.inspectCacheRequestProcessor(uuid, sender, playerName, this::sendInspectMsg));
|
||||
processing.submit(processorFactory.inspectCacheRequestProcessor(playerUUID, sender, playerName, this::sendInspectMsg));
|
||||
} catch (DBOpException e) {
|
||||
sender.sendMessage("§eDatabase exception occurred: " + e.getMessage());
|
||||
errorHandler.log(L.ERROR, this.getClass(), e);
|
||||
|
@ -18,6 +18,7 @@ package com.djrapitops.plan.command.commands.manage;
|
||||
|
||||
import com.djrapitops.plan.api.exceptions.database.DBOpException;
|
||||
import com.djrapitops.plan.db.Database;
|
||||
import com.djrapitops.plan.db.access.queries.PlayerFetchQueries;
|
||||
import com.djrapitops.plan.db.access.transactions.RemovePlayerTransaction;
|
||||
import com.djrapitops.plan.system.database.DBSystem;
|
||||
import com.djrapitops.plan.system.locale.Locale;
|
||||
@ -95,15 +96,15 @@ public class ManageRemoveCommand extends CommandNode {
|
||||
private void runRemoveTask(String playerName, Sender sender, String[] args) {
|
||||
processing.submitCritical(() -> {
|
||||
try {
|
||||
UUID uuid = uuidUtility.getUUIDOf(playerName);
|
||||
UUID playerUUID = uuidUtility.getUUIDOf(playerName);
|
||||
|
||||
if (uuid == null) {
|
||||
if (playerUUID == null) {
|
||||
sender.sendMessage(locale.getString(CommandLang.FAIL_USERNAME_NOT_VALID));
|
||||
return;
|
||||
}
|
||||
|
||||
Database db = dbSystem.getDatabase();
|
||||
if (!db.check().isPlayerRegistered(uuid)) {
|
||||
if (!db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID))) {
|
||||
sender.sendMessage(locale.getString(CommandLang.FAIL_USERNAME_NOT_KNOWN));
|
||||
return;
|
||||
}
|
||||
@ -119,7 +120,7 @@ public class ManageRemoveCommand extends CommandNode {
|
||||
|
||||
sender.sendMessage(locale.getString(ManageLang.PROGRESS_START));
|
||||
|
||||
db.executeTransaction(new RemovePlayerTransaction(uuid));
|
||||
db.executeTransaction(new RemovePlayerTransaction(playerUUID));
|
||||
|
||||
sender.sendMessage(locale.getString(ManageLang.PROGRESS_SUCCESS));
|
||||
} catch (DBOpException e) {
|
||||
|
@ -18,6 +18,7 @@ package com.djrapitops.plan.db.access.queries;
|
||||
|
||||
import com.djrapitops.plan.data.container.GeoInfo;
|
||||
import com.djrapitops.plan.data.container.UserInfo;
|
||||
import com.djrapitops.plan.db.access.HasMoreThanZeroQueryStatement;
|
||||
import com.djrapitops.plan.db.access.Query;
|
||||
import com.djrapitops.plan.db.access.QueryStatement;
|
||||
import com.djrapitops.plan.db.sql.tables.GeoInfoTable;
|
||||
@ -129,4 +130,21 @@ public class PlayerFetchQueries {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the player's BaseUser is registered.
|
||||
*
|
||||
* @param playerUUID UUID of the player.
|
||||
* @return True if the player's BaseUser is found from plan_users
|
||||
*/
|
||||
public static Query<Boolean> isPlayerRegistered(UUID playerUUID) {
|
||||
String sql = "SELECT COUNT(1) as c FROM " + UsersTable.TABLE_NAME +
|
||||
" WHERE " + UsersTable.USER_UUID + "=?";
|
||||
return new HasMoreThanZeroQueryStatement(sql) {
|
||||
@Override
|
||||
public void prepare(PreparedStatement statement) throws SQLException {
|
||||
statement.setString(1, playerUUID.toString());
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
@ -135,24 +135,6 @@ public class UsersTable extends Table {
|
||||
});
|
||||
}
|
||||
|
||||
public boolean isRegistered(UUID uuid) {
|
||||
String sql = Select.from(tableName, "COUNT(" + ID + ") as c")
|
||||
.where(USER_UUID + "=?")
|
||||
.toString();
|
||||
|
||||
return query(new QueryStatement<Boolean>(sql) {
|
||||
@Override
|
||||
public void prepare(PreparedStatement statement) throws SQLException {
|
||||
statement.setString(1, uuid.toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean processResults(ResultSet set) throws SQLException {
|
||||
return set.next() && set.getInt("c") >= 1;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Register a new user (UUID) to the database.
|
||||
*
|
||||
|
@ -20,11 +20,6 @@ import java.util.UUID;
|
||||
|
||||
@Deprecated
|
||||
public interface CheckOperations {
|
||||
@Deprecated
|
||||
boolean isPlayerRegistered(UUID player);
|
||||
|
||||
@Deprecated
|
||||
boolean isPlayerRegistered(UUID player, UUID server);
|
||||
|
||||
@Deprecated
|
||||
boolean isPlayerRegisteredOnThisServer(UUID player);
|
||||
|
@ -27,16 +27,6 @@ public class SQLCheckOps extends SQLOps implements CheckOperations {
|
||||
super(db);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerRegistered(UUID player) {
|
||||
return usersTable.isRegistered(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerRegistered(UUID player, UUID server) {
|
||||
return userInfoTable.isRegistered(player, server);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPlayerRegisteredOnThisServer(UUID player) {
|
||||
return userInfoTable.isRegisteredOnThisServer(player);
|
||||
|
@ -17,6 +17,7 @@
|
||||
package com.djrapitops.plan.system.processing.processors.player;
|
||||
|
||||
import com.djrapitops.plan.db.Database;
|
||||
import com.djrapitops.plan.db.access.queries.PlayerFetchQueries;
|
||||
import com.djrapitops.plan.system.processing.CriticalRunnable;
|
||||
import com.djrapitops.plan.system.processing.Processing;
|
||||
|
||||
@ -54,7 +55,7 @@ public class ProxyRegisterProcessor implements CriticalRunnable {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
if (database.check().isPlayerRegistered(uuid)) {
|
||||
if (database.query(PlayerFetchQueries.isPlayerRegistered(uuid))) {
|
||||
return;
|
||||
}
|
||||
database.save().registerNewUser(uuid, registered, name);
|
||||
|
@ -17,6 +17,7 @@
|
||||
package com.djrapitops.plan.system.processing.processors.player;
|
||||
|
||||
import com.djrapitops.plan.db.Database;
|
||||
import com.djrapitops.plan.db.access.queries.PlayerFetchQueries;
|
||||
import com.djrapitops.plan.system.database.databases.operation.CheckOperations;
|
||||
import com.djrapitops.plan.system.database.databases.operation.SaveOperations;
|
||||
import com.djrapitops.plan.system.processing.Processing;
|
||||
@ -61,7 +62,7 @@ public class RegisterProcessor extends AbsRunnable {
|
||||
CheckOperations check = database.check();
|
||||
SaveOperations save = database.save();
|
||||
try {
|
||||
if (!check.isPlayerRegistered(uuid)) {
|
||||
if (!database.query(PlayerFetchQueries.isPlayerRegistered(uuid))) {
|
||||
save.registerNewUser(uuid, registered.getAsLong(), name);
|
||||
}
|
||||
if (!check.isPlayerRegisteredOnThisServer(uuid)) {
|
||||
|
@ -20,6 +20,7 @@ import com.djrapitops.plan.api.exceptions.WebUserAuthException;
|
||||
import com.djrapitops.plan.api.exceptions.connection.NoServersException;
|
||||
import com.djrapitops.plan.api.exceptions.connection.WebException;
|
||||
import com.djrapitops.plan.data.WebUser;
|
||||
import com.djrapitops.plan.db.access.queries.PlayerFetchQueries;
|
||||
import com.djrapitops.plan.system.database.DBSystem;
|
||||
import com.djrapitops.plan.system.info.InfoSystem;
|
||||
import com.djrapitops.plan.system.webserver.Request;
|
||||
@ -78,7 +79,7 @@ public class PlayerPageHandler implements PageHandler {
|
||||
}
|
||||
try {
|
||||
// TODO Move this Database dependency to PlayerPage generation in PageFactory instead.
|
||||
if (dbSystem.getDatabase().check().isPlayerRegistered(uuid)) {
|
||||
if (dbSystem.getDatabase().query(PlayerFetchQueries.isPlayerRegistered(uuid))) {
|
||||
if (raw) {
|
||||
return ResponseCache.loadResponse(PageId.RAW_PLAYER.of(uuid), () -> responseFactory.rawPlayerPageResponse(uuid));
|
||||
}
|
||||
|
@ -410,9 +410,9 @@ public abstract class CommonDBTest {
|
||||
@Test
|
||||
public void userRegisterChecksReturnCorrectValues() {
|
||||
UsersTable usersTable = db.getUsersTable();
|
||||
assertFalse(usersTable.isRegistered(playerUUID));
|
||||
assertFalse(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
||||
saveUserOne();
|
||||
assertTrue(usersTable.isRegistered(playerUUID));
|
||||
assertTrue(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
||||
|
||||
UserInfoTable userInfoTable = db.getUserInfoTable();
|
||||
assertFalse(userInfoTable.isRegistered(playerUUID));
|
||||
@ -500,11 +500,11 @@ public abstract class CommonDBTest {
|
||||
nicknamesTable.saveUserName(playerUUID, new Nickname("TestNick", System.currentTimeMillis(), serverUUID));
|
||||
saveGeoInfo(playerUUID, new GeoInfo("1.2.3.4", "TestLoc", 223456789L, "3"));
|
||||
|
||||
assertTrue(usersTable.isRegistered(playerUUID));
|
||||
assertTrue(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
||||
|
||||
db.executeTransaction(new RemovePlayerTransaction(playerUUID));
|
||||
|
||||
assertFalse(usersTable.isRegistered(playerUUID));
|
||||
assertFalse(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
||||
assertFalse(userInfoTable.isRegistered(playerUUID));
|
||||
assertTrue(nicknamesTable.getNicknames(playerUUID).isEmpty());
|
||||
assertTrue(db.query(PlayerFetchQueries.playerGeoInfo(playerUUID)).isEmpty());
|
||||
@ -558,7 +558,7 @@ public abstract class CommonDBTest {
|
||||
saveGeoInfo(playerUUID, new GeoInfo("1.2.3.4", "TestLoc", 223456789L,
|
||||
new SHA256Hash("1.2.3.4").create()));
|
||||
|
||||
assertTrue(usersTable.isRegistered(playerUUID));
|
||||
assertTrue(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
||||
|
||||
useCommand("plan");
|
||||
useCommand("plan");
|
||||
@ -778,11 +778,11 @@ public abstract class CommonDBTest {
|
||||
|
||||
@Test
|
||||
public void testRegister() {
|
||||
assertFalse(db.check().isPlayerRegistered(playerUUID));
|
||||
assertFalse(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
||||
assertFalse(db.check().isPlayerRegisteredOnThisServer(playerUUID));
|
||||
db.save().registerNewUser(playerUUID, 1000L, "name");
|
||||
db.save().registerNewUserOnThisServer(playerUUID, 500L);
|
||||
assertTrue(db.check().isPlayerRegistered(playerUUID));
|
||||
assertTrue(db.query(PlayerFetchQueries.isPlayerRegistered(playerUUID)));
|
||||
assertTrue(db.check().isPlayerRegisteredOnThisServer(playerUUID));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user