Allow full JDBC URL to be set in RDBMS meta-data, used directly (w/ a known vendor)

This commit is contained in:
2023-06-08 14:37:59 -05:00
parent a18d2afee5
commit eb151f0610
2 changed files with 44 additions and 18 deletions

View File

@ -25,6 +25,7 @@ package com.kingsrook.qqq.backend.module.rdbms.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import com.kingsrook.qqq.backend.core.utils.StringUtils;
import com.kingsrook.qqq.backend.module.rdbms.model.metadata.RDBMSBackendMetaData;
@ -41,28 +42,20 @@ public class ConnectionManager
{
String jdbcURL;
switch (backend.getVendor())
if(StringUtils.hasContent(backend.getJdbcUrl()))
{
case "aurora":
jdbcURL = backend.getJdbcUrl();
}
else
{
switch(backend.getVendor())
{
// TODO aws-mysql-jdbc driver not working when running on AWS
// jdbcURL = "jdbc:mysql:aws://" + backend.getHostName() + ":" + backend.getPort() + "/" + backend.getDatabaseName() + "?rewriteBatchedStatements=true&zeroDateTimeBehavior=CONVERT_TO_NULL";
jdbcURL = "jdbc:mysql://" + backend.getHostName() + ":" + backend.getPort() + "/" + backend.getDatabaseName() + "?rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull&useSSL=false";
break;
}
case "mysql":
{
jdbcURL = "jdbc:mysql://" + backend.getHostName() + ":" + backend.getPort() + "/" + backend.getDatabaseName() + "?rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull";
break;
}
case "h2":
{
jdbcURL = "jdbc:h2:" + backend.getHostName() + ":" + backend.getDatabaseName() + ";MODE=MySQL;DB_CLOSE_DELAY=-1";
break;
}
default:
{
throw new IllegalArgumentException("Unsupported rdbms backend vendor: " + backend.getVendor());
case "aurora" -> jdbcURL = "jdbc:mysql://" + backend.getHostName() + ":" + backend.getPort() + "/" + backend.getDatabaseName() + "?rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull&useSSL=false";
case "mysql" -> jdbcURL = "jdbc:mysql://" + backend.getHostName() + ":" + backend.getPort() + "/" + backend.getDatabaseName() + "?rewriteBatchedStatements=true&zeroDateTimeBehavior=convertToNull";
case "h2" -> jdbcURL = "jdbc:h2:" + backend.getHostName() + ":" + backend.getDatabaseName() + ";MODE=MySQL;DB_CLOSE_DELAY=-1";
default -> throw new IllegalArgumentException("Unsupported rdbms backend vendor: " + backend.getVendor());
}
}

View File

@ -39,6 +39,8 @@ public class RDBMSBackendMetaData extends QBackendMetaData
private String username;
private String password;
private String jdbcUrl;
/*******************************************************************************
@ -281,4 +283,35 @@ public class RDBMSBackendMetaData extends QBackendMetaData
password = interpreter.interpret(password);
}
/*******************************************************************************
** Getter for jdbcUrl
*******************************************************************************/
public String getJdbcUrl()
{
return (this.jdbcUrl);
}
/*******************************************************************************
** Setter for jdbcUrl
*******************************************************************************/
public void setJdbcUrl(String jdbcUrl)
{
this.jdbcUrl = jdbcUrl;
}
/*******************************************************************************
** Fluent setter for jdbcUrl
*******************************************************************************/
public RDBMSBackendMetaData withJdbcUrl(String jdbcUrl)
{
this.jdbcUrl = jdbcUrl;
return (this);
}
}