V10Lift/src/main/java/tech/sbdevelopment/v10lift/sbutils/StormSQLiteDB.java
SBDeveloper fdd34cbe31
Some checks failed
Java 11 CI / build (push) Has been cancelled
Java 17 CI / build (push) Has been cancelled
Migrated to storm
2024-08-23 14:12:19 +02:00

72 lines
No EOL
2.1 KiB
Java

package tech.sbdevelopment.v10lift.sbutils;
import com.craftmend.storm.Storm;
import com.craftmend.storm.connection.hikaricp.HikariDriver;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
public class StormSQLiteDB {
private final JavaPlugin plugin;
private final String dbName;
private final Storm storm;
/**
* Initialize a new database source
*
* @param dbName The database name
*/
public StormSQLiteDB(JavaPlugin plugin, String dbName) throws SQLException {
this.plugin = plugin;
this.dbName = dbName;
File dbFile = new File(plugin.getDataFolder(), dbName + ".db");
if (!dbFile.exists()) {
try {
plugin.getLogger().info("Generating the " + dbName + ".db...");
if (!dbFile.createNewFile()) {
throw new IOException("Couldn't generate the " + dbName + ".db!");
}
} catch (IOException e) {
throw new RuntimeException("Couldn't generate the " + dbName + ".db!", e);
}
}
HikariConfig config = new HikariConfig();
config.setPoolName(plugin.getName());
config.setJdbcUrl("jdbc:sqlite:" + dbFile.getAbsolutePath());
config.setUsername(null);
config.setPassword(null);
config.setDriverClassName("org.sqlite.JDBC");
config.setConnectionTestQuery("SELECT 1");
config.setMaxLifetime(60000);
config.setIdleTimeout(45000);
config.setMinimumIdle(10);
config.setMaximumPoolSize(50);
this.storm = new Storm(new HikariDriver(config));
}
/**
* Close the connection
*/
public void closeSource() {
plugin.getLogger().info("Closing the database connection for " + dbName + ".db...");
this.storm.getDriver().close();
}
/**
* Get the database connection
*
* @return The database connection
*/
public Storm getStorm() {
return storm;
}
}