Skip to content

Commit

Permalink
Add SQLite support
Browse files Browse the repository at this point in the history
Signed-off-by: applenick <[email protected]>
  • Loading branch information
applenick committed Jun 12, 2024
1 parent 384d715 commit af895c7
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 17 deletions.
8 changes: 7 additions & 1 deletion src/main/java/dev/pgm/community/database/DatabaseConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public class DatabaseConfig {
private String databaseName;
private String timezone;
private int maxConnections;
private String sqliteFileName;

public DatabaseConfig(Configuration config) {
reload(config);
Expand All @@ -24,6 +25,7 @@ public void reload(Configuration config) {
this.databaseName = config.getString("database.databaseName");
this.timezone = config.getString("database.timezone");
this.maxConnections = config.getInt("database.max-connections");
this.sqliteFileName = config.getString("database.sqlite-file");
}

public boolean isEnabled() {
Expand Down Expand Up @@ -51,6 +53,10 @@ public String getTimezone() {
}

public int getMaxDatabaseConnections() {
return maxConnections;
return isEnabled() ? maxConnections : 1;
}

public String getSQLiteFileName() {
return sqliteFileName;
}
}
36 changes: 21 additions & 15 deletions src/main/java/dev/pgm/community/database/DatabaseConnection.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import co.aikar.idb.BukkitDB;
import co.aikar.idb.DatabaseOptions;
import co.aikar.idb.DatabaseOptions.DatabaseOptionsBuilder;
import co.aikar.idb.PooledDatabaseOptions;
import co.aikar.idb.PooledDatabaseOptions.PooledDatabaseOptionsBuilder;
import com.google.common.collect.Maps;
import dev.pgm.community.Community;
import java.util.Map;
Expand All @@ -17,25 +19,29 @@ public DatabaseConnection(Community plugin) {
Map<String, Object> extraOptions = Maps.newHashMap();
extraOptions.put("serverTimezone", config.getTimezone());

DatabaseOptions options =
DatabaseOptionsBuilder builder =
DatabaseOptions.builder()
.poolName(plugin.getDescription().getName() + " DB")
.logger(plugin.getLogger())
.mysql(
config.getUsername(),
config.getPassword(),
config.getDatabaseName(),
config.getHost())
.build();

PooledDatabaseOptions poolOptions =
.logger(plugin.getLogger());

if (config.isEnabled()) {
builder.mysql(
config.getUsername(), config.getPassword(), config.getDatabaseName(), config.getHost());
} else {
builder.sqlite(config.getSQLiteFileName());
}

PooledDatabaseOptionsBuilder poolBuilder =
PooledDatabaseOptions.builder()
.options(options)
.maxConnections(config.getMaxDatabaseConnections())
.dataSourceProperties(extraOptions)
.build();
.options(builder.build())
.maxConnections(config.getMaxDatabaseConnections());

// Apply extra MySQL options
if (config.isEnabled()) {
poolBuilder.dataSourceProperties(extraOptions);
}

// Setup the main global DB
BukkitDB.createHikariDatabase(plugin, poolOptions);
BukkitDB.createHikariDatabase(plugin, poolBuilder.build());
}
}
3 changes: 2 additions & 1 deletion src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,8 @@ network:

# Database connection info
database:
enabled: true # True for mysql, false for sqlite
enabled: false # True for mysql, false for sqlite
sqlite-file: "community.sql"
username: "username"
password: "password"
databaseName: "minecraft"
Expand Down

0 comments on commit af895c7

Please sign in to comment.