Skip to content

Commit

Permalink
Changed database bridges to not create filters and serialize data unl…
Browse files Browse the repository at this point in the history
…ess they are in the correct mode
  • Loading branch information
OmerBenGera committed Jul 24, 2022
1 parent b01e470 commit 4829acd
Show file tree
Hide file tree
Showing 7 changed files with 388 additions and 296 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,4 +73,9 @@ default void startSavingData() {
*/
void setDatabaseBridgeMode(DatabaseBridgeMode databaseBridgeMode);

/**
* Get the current mode of the database bridge.
*/
DatabaseBridgeMode getDatabaseBridgeMode();

}
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,9 @@ public void setDatabaseBridgeMode(DatabaseBridgeMode databaseBridgeMode) {
// Do nothing.
}

@Override
public DatabaseBridgeMode getDatabaseBridgeMode() {
return DatabaseBridgeMode.IDLE;
}

}
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package com.bgsoftware.superiorskyblock.core.database.bridge;

import com.bgsoftware.superiorskyblock.SuperiorSkyblockPlugin;
import com.bgsoftware.superiorskyblock.api.data.DatabaseBridge;
import com.bgsoftware.superiorskyblock.api.data.DatabaseBridgeMode;
import com.bgsoftware.superiorskyblock.api.handlers.GridManager;
import com.bgsoftware.superiorskyblock.api.objects.Pair;
import com.bgsoftware.superiorskyblock.core.SBlockPosition;
import com.bgsoftware.superiorskyblock.core.serialization.Serializers;

import java.util.function.Consumer;

@SuppressWarnings("unchecked")
public class GridDatabaseBridge {

Expand All @@ -15,19 +19,26 @@ private GridDatabaseBridge() {
}

public static void saveLastIsland(GridManager gridManager, SBlockPosition lastIsland) {
gridManager.getDatabaseBridge().updateObject("grid", null, new Pair<>("last_island", lastIsland.toString()));
runOperationIfRunning(gridManager.getDatabaseBridge(), databaseBridge ->
databaseBridge.updateObject("grid", null, new Pair<>("last_island", lastIsland.toString())));
}

public static void insertGrid(GridManager gridManager) {
gridManager.getDatabaseBridge().insertObject("grid",
runOperationIfRunning(gridManager.getDatabaseBridge(), databaseBridge -> databaseBridge.insertObject("grid",
new Pair<>("last_island", Serializers.LOCATION_SPACED_SERIALIZER.serialize(gridManager.getLastIslandLocation())),
new Pair<>("max_island_size", plugin.getSettings().getMaxIslandSize()),
new Pair<>("world", plugin.getSettings().getWorlds().getDefaultWorldName())
);
));
}

public static void deleteGrid(GridManager gridManager) {
gridManager.getDatabaseBridge().deleteObject("grid", null);
runOperationIfRunning(gridManager.getDatabaseBridge(), databaseBridge ->
databaseBridge.deleteObject("grid", null));
}

private static void runOperationIfRunning(DatabaseBridge databaseBridge, Consumer<DatabaseBridge> databaseBridgeConsumer) {
if (databaseBridge.getDatabaseBridgeMode() == DatabaseBridgeMode.SAVE_DATA)
databaseBridgeConsumer.accept(databaseBridge);
}

}
Loading

0 comments on commit 4829acd

Please sign in to comment.