mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-12-21 05:50:18 +08:00
Prevent possible data-loss with old versions
This commit is contained in:
parent
a9d3a1c9f2
commit
081a40aff1
@ -16,10 +16,13 @@
|
|||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.storage.database.transactions.patches;
|
package com.djrapitops.plan.storage.database.transactions.patches;
|
||||||
|
|
||||||
|
import com.djrapitops.plan.storage.database.queries.QueryAllStatement;
|
||||||
import com.djrapitops.plan.storage.database.sql.tables.GeoInfoTable;
|
import com.djrapitops.plan.storage.database.sql.tables.GeoInfoTable;
|
||||||
|
|
||||||
import static com.djrapitops.plan.storage.database.sql.parsing.Sql.DISTINCT;
|
import java.sql.ResultSet;
|
||||||
import static com.djrapitops.plan.storage.database.sql.parsing.Sql.FROM;
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
import static com.djrapitops.plan.storage.database.sql.parsing.Sql.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Patch that replaces plan_ips with plan_geolocations table.
|
* Patch that replaces plan_ips with plan_geolocations table.
|
||||||
@ -41,6 +44,10 @@ public class DeleteIPsPatch extends Patch {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void applyPatch() {
|
protected void applyPatch() {
|
||||||
|
if (hasTable(GeoInfoTable.TABLE_NAME) && hasLessDataInPlanIPs()) {
|
||||||
|
dropTable("plan_ips");
|
||||||
|
return;
|
||||||
|
}
|
||||||
tempOldTable();
|
tempOldTable();
|
||||||
|
|
||||||
dropTable(GeoInfoTable.TABLE_NAME);
|
dropTable(GeoInfoTable.TABLE_NAME);
|
||||||
@ -60,6 +67,22 @@ public class DeleteIPsPatch extends Patch {
|
|||||||
dropTable(tempTableName);
|
dropTable(tempTableName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean hasLessDataInPlanIPs() {
|
||||||
|
Integer inIPs = query(new QueryAllStatement<Integer>(SELECT + "COUNT(1) as c" + FROM + "plan_ips") {
|
||||||
|
@Override
|
||||||
|
public Integer processResults(ResultSet set) throws SQLException {
|
||||||
|
return set.next() ? set.getInt("c") : 0;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Integer inGeoInfo = query(new QueryAllStatement<Integer>(SELECT + "COUNT(1) as c" + FROM + GeoInfoTable.TABLE_NAME) {
|
||||||
|
@Override
|
||||||
|
public Integer processResults(ResultSet set) throws SQLException {
|
||||||
|
return set.next() ? set.getInt("c") : 0;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return inIPs <= inGeoInfo;
|
||||||
|
}
|
||||||
|
|
||||||
private void tempOldTable() {
|
private void tempOldTable() {
|
||||||
if (!hasTable(tempTableName)) {
|
if (!hasTable(tempTableName)) {
|
||||||
renameTable("plan_ips", tempTableName);
|
renameTable("plan_ips", tempTableName);
|
||||||
|
Loading…
Reference in New Issue
Block a user