Skip to content

Commit f40d881

Browse files
committed
fix: Improved last server updater
1 parent 6fcaf60 commit f40d881

1 file changed

Lines changed: 23 additions & 13 deletions

File tree

  • src/main/java/io/github/_4drian3d/authmevelocity/lastserver/database

src/main/java/io/github/_4drian3d/authmevelocity/lastserver/database/Database.java

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -61,21 +61,31 @@ public String lastServerOf(final String playerName) {
6161

6262
public void setLastServer(final String playerName, final String server) {
6363
try (final Connection connection = this.source.getConnection();
64-
final PreparedStatement statement = connection.prepareStatement(INSERT_DATA)
64+
final PreparedStatement statement = fromPlayer(playerName, connection);
65+
final ResultSet rs = statement.executeQuery()
6566
) {
66-
statement.setString(1, playerName);
67-
statement.setString(2, server);
68-
statement.executeUpdate();
69-
} catch (final SQLException e) {
70-
try (final Connection connection = this.source.getConnection();
71-
final PreparedStatement statement = connection.prepareStatement(UPDATE_SERVER)
72-
) {
73-
statement.setString(1, server);
74-
statement.setString(2, playerName);
75-
statement.executeUpdate();
76-
} catch (SQLException ex) {
77-
this.logger.warn("An error occurred updating last server information of player {}", playerName, ex);
67+
if (rs.next()) {
68+
// Already has server data
69+
final String serverFromDB = rs.getString("server");
70+
// If the last player server is the same in the database, the UPDATE sequence is avoided
71+
if (server.equalsIgnoreCase(serverFromDB)) {
72+
return;
73+
}
74+
try (final PreparedStatement updateStatement = connection.prepareStatement(UPDATE_SERVER)) {
75+
updateStatement.setString(1, server);
76+
updateStatement.setString(2, playerName);
77+
updateStatement.executeUpdate();
78+
}
79+
} else {
80+
// Insert new server data
81+
try (final PreparedStatement insertStatement = connection.prepareStatement(INSERT_DATA)) {
82+
insertStatement.setString(1, playerName);
83+
insertStatement.setString(2, server);
84+
insertStatement.executeUpdate();
85+
}
7886
}
87+
} catch (final SQLException e) {
88+
this.logger.warn("An error occurred updating last server information of player {}", playerName, e);
7989
}
8090
}
8191

0 commit comments

Comments
 (0)