Fixed skin deletion

This commit is contained in:
2025-06-12 15:53:21 +02:00
parent d3492ecd42
commit cc5389ea8f

View File

@ -149,19 +149,21 @@ public class Database {
public static void deleteSkin(String hash) throws SQLException {
Skin skin = getSkin(hash);
Skin defaultSkin = ensureDefaultSkin();
Skin defaultSkin = ensureDefaultSkin(hash);
PreparedStatement stmt = getConnection().prepareStatement("DELETE FROM skin WHERE _hash = ?;");
// Give effected profiles default skin
PreparedStatement stmt = getConnection().prepareStatement("UPDATE profile SET skin = ? WHERE skin = ?;");
stmt.setString(1, hash);
stmt.setInt(1, defaultSkin.getId());
stmt.setInt(2, skin.getId());
stmt.execute();
stmt.close();
stmt = getConnection().prepareStatement("UPDATE profile SET skin = ? WHERE skin = ?;");
// Remove targeted skin
stmt = getConnection().prepareStatement("DELETE FROM skin WHERE id = ?;");
stmt.setInt(1, defaultSkin.getId());
stmt.setInt(2, skin.getId());
stmt.setInt(1, skin.getId());
stmt.execute();
stmt.close();
@ -289,9 +291,15 @@ public class Database {
stmt.close();
}
public static Skin getDefaultSkin() throws SQLException {
Statement stmt = getConnection().createStatement();
ResultSet resultSet = stmt.executeQuery("SELECT * FROM skin ORDER BY id ASC LIMIT 1;");
public static Skin getDefaultSkin(String exclude_skin) throws SQLException {
PreparedStatement stmt = exclude_skin == null ?
getConnection().prepareStatement("SELECT * FROM skin ORDER BY id ASC LIMIT 1;") :
getConnection().prepareStatement("SELECT * FROM skin WHERE _hash != ? ORDER BY id ASC LIMIT 1;");
if (exclude_skin != null)
stmt.setString(1, exclude_skin);
ResultSet resultSet = stmt.executeQuery();
if (!resultSet.next())
return null;
@ -305,9 +313,13 @@ public class Database {
);
}
private static Skin ensureDefaultSkin() throws SQLException {
public static Skin getDefaultSkin() throws SQLException {
return getDefaultSkin(null);
}
private static Skin ensureDefaultSkin(String exclude_skin) throws SQLException {
// TODO: Optimise
Skin skin = getDefaultSkin();
Skin skin = getDefaultSkin(exclude_skin);
if (skin != null)
return skin;
try {
@ -320,7 +332,11 @@ public class Database {
} catch (IOException e) {
e.printStackTrace();
}
return getDefaultSkin();
return getDefaultSkin(exclude_skin);
}
private static Skin ensureDefaultSkin() throws SQLException {
return ensureDefaultSkin(null);
}
private boolean errored = false;