[FEATURE] Support initializeAtStart

This commit is contained in:
Gravita 2024-09-28 02:27:42 +07:00
parent 7dcb08fdaf
commit c7f4d8ac49
No known key found for this signature in database
GPG key ID: 543A8F335C9CD633
3 changed files with 22 additions and 1 deletions

View file

@ -9,18 +9,25 @@
import java.util.function.Consumer; import java.util.function.Consumer;
public class HikariSQLSourceConfig implements SQLSourceConfig { public class HikariSQLSourceConfig implements SQLSourceConfig {
private transient HikariDataSource dataSource; private transient volatile HikariDataSource dataSource;
private String dsClass; private String dsClass;
private Properties dsProps; private Properties dsProps;
private String driverClass; private String driverClass;
private String jdbcUrl; private String jdbcUrl;
private String username; private String username;
private String password; private String password;
private boolean initializeAtStart;
public void init() { public void init() {
if (dataSource != null) { if (dataSource != null) {
return; return;
} }
if(initializeAtStart) {
initializeConnection();
}
}
private void initializeConnection() {
HikariConfig config = new HikariConfig(); HikariConfig config = new HikariConfig();
consumeIfNotNull(config::setDataSourceClassName, dsClass); consumeIfNotNull(config::setDataSourceClassName, dsClass);
consumeIfNotNull(config::setDataSourceProperties, dsProps); consumeIfNotNull(config::setDataSourceProperties, dsProps);
@ -34,6 +41,11 @@ public void init() {
@Override @Override
public Connection getConnection() throws SQLException { public Connection getConnection() throws SQLException {
if(dataSource == null && !initializeAtStart) {
synchronized (this) {
initializeConnection();
}
}
return dataSource.getConnection(); return dataSource.getConnection();
} }

View file

@ -44,6 +44,7 @@ public SQLSourceConfig getSQLConfig() {
@Override @Override
public void init(LaunchServer server, AuthProviderPair pair) { public void init(LaunchServer server, AuthProviderPair pair) {
super.init(server, pair); super.init(server, pair);
logger.warn("Method 'mysql' deprecated and may be removed in future release. Please use new 'sql' method: https://gravitlauncher.com/auth");
String userInfoCols = makeUserCols(); String userInfoCols = makeUserCols();
String hardwareInfoCols = "id, hwDiskId, baseboardSerialNumber, displayId, bitness, totalMemory, logicalProcessors, physicalProcessors, processorMaxFreq, battery, id, graphicCard, banned, publicKey"; String hardwareInfoCols = "id, hwDiskId, baseboardSerialNumber, displayId, bitness, totalMemory, logicalProcessors, physicalProcessors, processorMaxFreq, battery, id, graphicCard, banned, publicKey";
if (sqlFindHardwareByPublicKey == null) if (sqlFindHardwareByPublicKey == null)

View file

@ -1,5 +1,7 @@
package pro.gravit.launchserver.auth.core; package pro.gravit.launchserver.auth.core;
import pro.gravit.launchserver.LaunchServer;
import pro.gravit.launchserver.auth.AuthProviderPair;
import pro.gravit.launchserver.auth.PostgreSQLSourceConfig; import pro.gravit.launchserver.auth.PostgreSQLSourceConfig;
import pro.gravit.launchserver.auth.SQLSourceConfig; import pro.gravit.launchserver.auth.SQLSourceConfig;
@ -10,4 +12,10 @@ public class PostgresSQLCoreProvider extends AbstractSQLCoreProvider {
public SQLSourceConfig getSQLConfig() { public SQLSourceConfig getSQLConfig() {
return postgresSQLHolder; return postgresSQLHolder;
} }
@Override
public void init(LaunchServer server, AuthProviderPair pair) {
super.init(server, pair);
logger.warn("Method 'postgresql' deprecated and may be removed in future release. Please use new 'sql' method: https://gravitlauncher.com/auth");
}
} }