public static Configuration createConfiguration(final String host, final int port, final Optional<String> database, final String userName, final Optional<String> password,
final long connectTimeoutMilliSeconds, final long queryTimeoutMilliSeconds) {
final Optional<Duration> queryTimeout = queryTimeoutMilliSeconds == -1 ?
Optional.empty() :
Optional.of(Duration.ofMillis(queryTimeoutMilliSeconds));
return new Configuration(userName, host, port, password.orElse(null), database.orElse(null), new SSLConfiguration(), CharsetUtil.UTF_8, MAXIMUM_MESSAGE_SIZE,
PooledByteBufAllocator.DEFAULT, Duration.ofMillis(connectTimeoutMilliSeconds), Duration.ofSeconds(4),
queryTimeout.orElse(null));
}