55import net .okocraft .monitor .core .models .MonitorPlayer ;
66import org .jetbrains .annotations .NotNullByDefault ;
77
8+ import java .sql .Connection ;
89import java .sql .SQLException ;
910import java .util .UUID ;
1011
@@ -20,25 +21,40 @@ public PlayerStorage(Database database) {
2021 }
2122
2223 public MonitorPlayer initializePlayer (UUID uuid , String name ) throws SQLException {
24+ MonitorPlayer player ;
2325 try (var connection = this .database .getConnection ()) {
24- MonitorPlayer player = this .operators .players ().getPlayerByUUID (connection , uuid );
25-
26- if (player == null ) {
27- int playerId = this .operators .players ().insertPlayer (connection , uuid , name );
28- this .operators .playerNameHistory ().insertHistory (connection , playerId , name );
29- return new MonitorPlayer (playerId , uuid , name );
30- }
31-
32- if (player .name ().equals (name )) {
33- return player ;
26+ try {
27+ connection .setAutoCommit (false );
28+ player = this .initializePlayer (connection , uuid , name );
29+ connection .commit ();
30+ } catch (SQLException e ) {
31+ connection .rollback ();
32+ throw e ;
33+ } finally {
34+ connection .setAutoCommit (true );
3435 }
36+ }
37+ return player ;
38+ }
3539
36- MonitorPlayer updatedPlayer = new MonitorPlayer (player .playerId (), uuid , name );
40+ private MonitorPlayer initializePlayer (Connection connection , UUID uuid , String name ) throws SQLException {
41+ MonitorPlayer player = this .operators .players ().getPlayerByUUID (connection , uuid );
3742
38- this .operators .players ().updatePlayer (connection , updatedPlayer );
39- this .operators .playerNameHistory ().insertHistory (connection , player .playerId (), name );
43+ if (player == null ) {
44+ int playerId = this .operators .players ().insertPlayer (connection , uuid , name );
45+ this .operators .playerNameHistory ().insertHistory (connection , playerId , name );
46+ return new MonitorPlayer (playerId , uuid , name );
47+ }
4048
41- return updatedPlayer ;
49+ if (player .name ().equals (name )) {
50+ return player ;
4251 }
52+
53+ MonitorPlayer updatedPlayer = new MonitorPlayer (player .playerId (), uuid , name );
54+
55+ this .operators .players ().updatePlayer (connection , updatedPlayer );
56+ this .operators .playerNameHistory ().insertHistory (connection , player .playerId (), name );
57+
58+ return updatedPlayer ;
4359 }
4460}
0 commit comments