mirror of
https://github.com/kiranhart/Auction-House.git
synced 2024-11-26 06:05:25 +01:00
AuctionStatistic uses uuid instead of id auto increment
Took 32 minutes
This commit is contained in:
parent
55dd436e9d
commit
39177a1fbd
@ -18,19 +18,40 @@
|
|||||||
|
|
||||||
package ca.tweetzy.auctionhouse.auction;
|
package ca.tweetzy.auctionhouse.auction;
|
||||||
|
|
||||||
|
import ca.tweetzy.auctionhouse.AuctionHouse;
|
||||||
|
import ca.tweetzy.auctionhouse.api.interfaces.Storeable;
|
||||||
import ca.tweetzy.auctionhouse.auction.enums.AuctionStatisticType;
|
import ca.tweetzy.auctionhouse.auction.enums.AuctionStatisticType;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@Getter
|
@Getter
|
||||||
public final class AuctionStatistic {
|
public final class AuctionStatistic implements Storeable<AuctionStatistic> {
|
||||||
|
|
||||||
|
private final UUID id;
|
||||||
private final UUID statOwner;
|
private final UUID statOwner;
|
||||||
private final AuctionStatisticType statisticType;
|
private final AuctionStatisticType statisticType;
|
||||||
private final double value;
|
private final double value;
|
||||||
private final long time;
|
private final long time;
|
||||||
|
|
||||||
|
public AuctionStatistic(UUID statOwner, AuctionStatisticType type, double value) {
|
||||||
|
this(UUID.randomUUID(), statOwner, type, value, System.currentTimeMillis());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void store(Consumer<AuctionStatistic> stored) {
|
||||||
|
AuctionHouse.getInstance().getDataManager().insertStatistic(this, (error, statistic) -> {
|
||||||
|
if (error != null) return;
|
||||||
|
|
||||||
|
if (statistic != null) {
|
||||||
|
AuctionHouse.getInstance().getAuctionStatisticManager().addStatistic(statistic);
|
||||||
|
|
||||||
|
if (stored != null)
|
||||||
|
stored.accept(statistic);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,10 +3,7 @@ package ca.tweetzy.auctionhouse.database;
|
|||||||
import ca.tweetzy.auctionhouse.AuctionHouse;
|
import ca.tweetzy.auctionhouse.AuctionHouse;
|
||||||
import ca.tweetzy.auctionhouse.api.AuctionAPI;
|
import ca.tweetzy.auctionhouse.api.AuctionAPI;
|
||||||
import ca.tweetzy.auctionhouse.auction.*;
|
import ca.tweetzy.auctionhouse.auction.*;
|
||||||
import ca.tweetzy.auctionhouse.auction.enums.AdminAction;
|
import ca.tweetzy.auctionhouse.auction.enums.*;
|
||||||
import ca.tweetzy.auctionhouse.auction.enums.AuctionItemCategory;
|
|
||||||
import ca.tweetzy.auctionhouse.auction.enums.AuctionSaleType;
|
|
||||||
import ca.tweetzy.auctionhouse.auction.enums.AuctionSortType;
|
|
||||||
import ca.tweetzy.auctionhouse.settings.Settings;
|
import ca.tweetzy.auctionhouse.settings.Settings;
|
||||||
import ca.tweetzy.auctionhouse.transaction.Transaction;
|
import ca.tweetzy.auctionhouse.transaction.Transaction;
|
||||||
import ca.tweetzy.core.database.DataManagerAbstract;
|
import ca.tweetzy.core.database.DataManagerAbstract;
|
||||||
@ -393,6 +390,49 @@ public class DataManager extends DataManagerAbstract {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void insertStatistic(AuctionStatistic statistic, Callback<AuctionStatistic> callback) {
|
||||||
|
this.thread.execute(() -> this.databaseConnector.connect(connection -> {
|
||||||
|
try (PreparedStatement statement = connection.prepareStatement("INSERT INTO " + this.getTablePrefix() + "statistic (id, stat_owner, stat_type, value, time) VALUES (?, ?, ?, ?, ?)")) {
|
||||||
|
|
||||||
|
PreparedStatement fetch = connection.prepareStatement("SELECT * FROM " + this.getTablePrefix() + "statistic WHERE id = ?");
|
||||||
|
|
||||||
|
fetch.setString(1, statistic.getId().toString());
|
||||||
|
statement.setString(1, statistic.getId().toString());
|
||||||
|
statement.setString(2, statistic.getStatOwner().toString());
|
||||||
|
statement.setString(3, statistic.getStatisticType().name());
|
||||||
|
statement.setDouble(4, statistic.getValue());
|
||||||
|
statement.setLong(5, statistic.getTime());
|
||||||
|
|
||||||
|
if (callback != null) {
|
||||||
|
ResultSet res = fetch.executeQuery();
|
||||||
|
res.next();
|
||||||
|
callback.accept(null, extractAuctionStatistic(res));
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
resolveCallback(callback, e);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getStatistics(Callback<List<AuctionStatistic>> callback) {
|
||||||
|
List<AuctionStatistic> stats = new ArrayList<>();
|
||||||
|
this.thread.execute(() -> this.databaseConnector.connect(connection -> {
|
||||||
|
try (PreparedStatement statement = connection.prepareStatement("SELECT * FROM " + this.getTablePrefix() + "statistic")) {
|
||||||
|
ResultSet resultSet = statement.executeQuery();
|
||||||
|
while (resultSet.next()) {
|
||||||
|
stats.add(extractAuctionStatistic(resultSet));
|
||||||
|
}
|
||||||
|
|
||||||
|
callback.accept(null, stats);
|
||||||
|
} catch (Exception e) {
|
||||||
|
resolveCallback(callback, e);
|
||||||
|
}
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public void getStats(Callback<Map<UUID, AuctionStat<Integer, Integer, Integer, Double, Double>>> callback) {
|
public void getStats(Callback<Map<UUID, AuctionStat<Integer, Integer, Integer, Double, Double>>> callback) {
|
||||||
Map<UUID, AuctionStat<Integer, Integer, Integer, Double, Double>> stats = new HashMap<>();
|
Map<UUID, AuctionStat<Integer, Integer, Integer, Double, Double>> stats = new HashMap<>();
|
||||||
this.async(() -> this.databaseConnector.connect(connection -> {
|
this.async(() -> this.databaseConnector.connect(connection -> {
|
||||||
@ -415,6 +455,7 @@ public class DataManager extends DataManagerAbstract {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public void updateStats(Map<UUID, AuctionStat<Integer, Integer, Integer, Double, Double>> stats, UpdateCallback callback) {
|
public void updateStats(Map<UUID, AuctionStat<Integer, Integer, Integer, Double, Double>> stats, UpdateCallback callback) {
|
||||||
this.databaseConnector.connect(connection -> {
|
this.databaseConnector.connect(connection -> {
|
||||||
connection.setAutoCommit(false);
|
connection.setAutoCommit(false);
|
||||||
@ -588,6 +629,16 @@ public class DataManager extends DataManagerAbstract {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private AuctionStatistic extractAuctionStatistic(ResultSet resultSet) throws SQLException {
|
||||||
|
return new AuctionStatistic(
|
||||||
|
UUID.fromString(resultSet.getString("uuid")),
|
||||||
|
UUID.fromString(resultSet.getString("stat_owner")),
|
||||||
|
AuctionStatisticType.valueOf(resultSet.getString("stat_type")),
|
||||||
|
resultSet.getDouble("value"),
|
||||||
|
resultSet.getLong("time")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
private AuctionPlayer extractAuctionPlayer(ResultSet resultSet) throws SQLException {
|
private AuctionPlayer extractAuctionPlayer(ResultSet resultSet) throws SQLException {
|
||||||
return new AuctionPlayer(
|
return new AuctionPlayer(
|
||||||
UUID.fromString(resultSet.getString("uuid")),
|
UUID.fromString(resultSet.getString("uuid")),
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
package ca.tweetzy.auctionhouse.database.migrations;
|
package ca.tweetzy.auctionhouse.database.migrations;
|
||||||
|
|
||||||
import ca.tweetzy.auctionhouse.AuctionHouse;
|
|
||||||
import ca.tweetzy.core.database.DataMigration;
|
import ca.tweetzy.core.database.DataMigration;
|
||||||
import ca.tweetzy.core.database.MySQLConnector;
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
@ -23,11 +21,9 @@ public class _16_StatisticVersionTwoMigration extends DataMigration {
|
|||||||
@Override
|
@Override
|
||||||
public void migrate(Connection connection, String tablePrefix) throws SQLException {
|
public void migrate(Connection connection, String tablePrefix) throws SQLException {
|
||||||
|
|
||||||
String autoIncrement = AuctionHouse.getInstance().getDatabaseConnector() instanceof MySQLConnector ? " AUTO_INCREMENT" : "";
|
|
||||||
|
|
||||||
try (Statement statement = connection.createStatement()) {
|
try (Statement statement = connection.createStatement()) {
|
||||||
statement.execute("CREATE TABLE " + tablePrefix + "statistic (" +
|
statement.execute("CREATE TABLE " + tablePrefix + "statistic (" +
|
||||||
"id INTEGER PRIMARY KEY" + autoIncrement + ", " +
|
"id VARCHAR(36) PRIMARY KEY, " +
|
||||||
"stat_owner VARCHAR(36) NOT NULL, " +
|
"stat_owner VARCHAR(36) NOT NULL, " +
|
||||||
"stat_type VARCHAR(20) NOT NULL, " +
|
"stat_type VARCHAR(20) NOT NULL, " +
|
||||||
"value DOUBLE NOT NULL, " +
|
"value DOUBLE NOT NULL, " +
|
||||||
|
Loading…
Reference in New Issue
Block a user