Plan/Plan/common/src/test/java/com/djrapitops/plan/storage/database/DatabaseTestPreparer.java

101 lines
3.3 KiB
Java

/*
* This file is part of Player Analytics (Plan).
*
* Plan is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License v3 as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Plan is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Plan. If not, see <https://www.gnu.org/licenses/>.
*/
package com.djrapitops.plan.storage.database;
import com.djrapitops.plan.PlanSystem;
import com.djrapitops.plan.component.ComponentSvc;
import com.djrapitops.plan.delivery.DeliveryUtilities;
import com.djrapitops.plan.extension.ExtensionSvc;
import com.djrapitops.plan.identification.ServerInfo;
import com.djrapitops.plan.identification.ServerUUID;
import com.djrapitops.plan.settings.config.PlanConfig;
import com.djrapitops.plan.storage.database.queries.filter.QueryFilters;
import com.djrapitops.plan.storage.database.transactions.Executable;
import com.djrapitops.plan.storage.database.transactions.Transaction;
import utilities.TestConstants;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
public interface DatabaseTestPreparer {
String[] worlds = new String[]{"TestWorld", "TestWorld2"};
UUID playerUUID = TestConstants.PLAYER_ONE_UUID;
UUID player2UUID = TestConstants.PLAYER_TWO_UUID;
UUID player3UUID = TestConstants.PLAYER_THREE_UUID;
Database db();
ServerUUID serverUUID();
/**
* @deprecated Dependencies may not include the full system in the future.
*/
@Deprecated
PlanSystem system();
default PlanConfig config() {
return system().getConfigSystem().getConfig();
}
default DBSystem dbSystem() {
return system().getDatabaseSystem();
}
default ServerInfo serverInfo() {
return system().getServerInfo();
}
default DeliveryUtilities deliveryUtilities() {
return system().getDeliveryUtilities();
}
default ExtensionSvc extensionService() {return system().getApiServices().getExtensionService();}
default ComponentSvc componentService() {return system().getApiServices().getComponentService();}
QueryFilters queryFilters();
default void execute(Executable executable) {
try {
db().executeTransaction(new Transaction() {
@Override
protected void performOperations() {
execute(executable);
}
}).get();
} catch (InterruptedException | ExecutionException e) {
throw new AssertionError(e);
}
}
default void executeTransactions(Transaction... transactions) {
for (Transaction transaction : transactions) {
try {
db().executeTransaction(transaction).get();
} catch (InterruptedException | ExecutionException e) {
throw new AssertionError(e);
}
}
}
default void forcePersistenceCheck() {
db().close();
db().init();
}
}