diff --git a/src/de/steamwar/sql/Event.java b/src/de/steamwar/sql/Event.java index 90dcba2..7985232 100644 --- a/src/de/steamwar/sql/Event.java +++ b/src/de/steamwar/sql/Event.java @@ -97,11 +97,6 @@ public class Event { return schemType; } - @Deprecated - public String getSchemType() { - return schemType.toDB(); - } - private boolean now() { Instant now = Instant.now(); return now.isAfter(start.toInstant()) && now.isBefore(end.toInstant()); diff --git a/src/de/steamwar/sql/Fight.java b/src/de/steamwar/sql/Fight.java index 8576184..efa230d 100644 --- a/src/de/steamwar/sql/Fight.java +++ b/src/de/steamwar/sql/Fight.java @@ -41,7 +41,7 @@ public class Fight { public static List getPage(int page, int elementsPerPage) { List fights = getPage.listSelect(page * elementsPerPage, elementsPerPage); - List fightPlayers = FightPlayer.batchGet(fights.stream().map(f -> f.fightID).toArray(Integer[]::new)); + List fightPlayers = FightPlayer.batchGet(fights.stream().map(f -> f.fightID)); for(Fight fight : fights) { fight.initPlayers(fightPlayers); } diff --git a/src/de/steamwar/sql/FightPlayer.java b/src/de/steamwar/sql/FightPlayer.java index 73b5a05..57b977c 100644 --- a/src/de/steamwar/sql/FightPlayer.java +++ b/src/de/steamwar/sql/FightPlayer.java @@ -26,8 +26,9 @@ import de.steamwar.sql.internal.Table; import lombok.AllArgsConstructor; import lombok.Getter; -import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; @AllArgsConstructor public class FightPlayer { @@ -56,10 +57,9 @@ public class FightPlayer { create.update(fightID, userID, blue ? 1 : 2, kit, kills, isOut); } - public static List batchGet(Integer[] fightIds) { - if(fightIds.length == 0) - return Collections.emptyList(); - - return batchGet.listSelect((Object) fightIds); + public static List batchGet(Stream fightIds) { + try (SelectStatement batch = new SelectStatement<>(table, "SELECT * FROM FightPlayer WHERE FightID IN (" + fightIds.map(Object::toString).collect(Collectors.joining(", ")) + ")")) { + return batch.listSelect(); + } } } diff --git a/src/de/steamwar/sql/SteamwarUser.java b/src/de/steamwar/sql/SteamwarUser.java index dfbbcd0..7ce882d 100644 --- a/src/de/steamwar/sql/SteamwarUser.java +++ b/src/de/steamwar/sql/SteamwarUser.java @@ -26,6 +26,7 @@ import java.sql.Timestamp; import java.util.*; import java.util.function.BiConsumer; import java.util.function.Consumer; +import java.util.stream.Collectors; public class SteamwarUser { @@ -47,7 +48,6 @@ public class SteamwarUser { private static final SelectStatement byDiscord = table.selectFields("DiscordId"); private static final SelectStatement byTeam = table.selectFields("Team"); private static final SelectStatement getServerTeam = new SelectStatement<>(table, "SELECT * FROM UserData WHERE UserGroup != 'Member' AND UserGroup != 'YouTuber'"); - private static final SelectStatement batchGet = new SelectStatement<>(table, "SELECT * FROM UserData WHERE id IN ?"); private static final Statement updateName = table.update(Table.PRIMARY, "UserName"); private static final Statement updateLocale = table.update(Table.PRIMARY, "Locale", "ManualLocale"); @@ -135,7 +135,9 @@ public class SteamwarUser { if(ids.isEmpty()) return; - batchGet.listSelect((Object) ids.toArray()); + try (SelectStatement batch = new SelectStatement<>(table, "SELECT * FROM UserData WHERE id IN (" + ids.stream().map(Object::toString).collect(Collectors.joining(", ")) + ")")) { + batch.listSelect(); + } } @Getter diff --git a/src/de/steamwar/sql/Tutorial.java b/src/de/steamwar/sql/Tutorial.java index 3249bfe..9febcba 100644 --- a/src/de/steamwar/sql/Tutorial.java +++ b/src/de/steamwar/sql/Tutorial.java @@ -63,7 +63,7 @@ public class Tutorial { @Getter @Field(keys = {Table.PRIMARY}, autoincrement = true) - private final int id; + private final int tutorialId; @Getter @Field(keys = {"CreatorName"}) private final int creator; @@ -81,14 +81,14 @@ public class Tutorial { private final double stars; public void release() { - release.update(1, id); + release.update(1, tutorialId); } public void delete() { - delete.update(id); + delete.update(tutorialId); } public void rate(int user, int rating) { - rate.update(id, user, rating); + rate.update(tutorialId, user, rating); } } diff --git a/src/de/steamwar/sql/internal/SqlTypeMapper.java b/src/de/steamwar/sql/internal/SqlTypeMapper.java index b9ff93e..34c6173 100644 --- a/src/de/steamwar/sql/internal/SqlTypeMapper.java +++ b/src/de/steamwar/sql/internal/SqlTypeMapper.java @@ -65,7 +65,6 @@ public final class SqlTypeMapper { new SqlTypeMapper<>(String.class, "TEXT", ResultSet::getString, PreparedStatement::setString); new SqlTypeMapper<>(Timestamp.class, "TIMESTAMP", ResultSet::getTimestamp, PreparedStatement::setTimestamp); new SqlTypeMapper<>(InputStream.class, "BLOB", ResultSet::getBinaryStream, PreparedStatement::setBinaryStream); - new SqlTypeMapper<>(Integer[].class, null, (rs, identifier) -> { throw new SecurityException("Arrays cannot be used as type (recursive select)"); }, (st, index, value) -> st.setArray(index, st.getConnection().createArrayOf("INTEGER", value))); } private static void primitiveMapper(Class primitive, Class wrapped, String sqlType, SQLReader reader, SQLWriter writer) {