Postgresql support added

This commit is contained in:
xis 2023-10-22 12:52:25 +02:00
parent ba2cb2b578
commit c915b0b9b1
4 changed files with 66 additions and 5 deletions

View file

@ -24,6 +24,7 @@ Available env variables with their default values that you can overwrite:
| NEXTCLOUD_DLNA_INTERFACE | eth0 | interface the server will be listening on | | NEXTCLOUD_DLNA_INTERFACE | eth0 | interface the server will be listening on |
| NEXTCLOUD_DLNA_FRIENDLY_NAME | Nextcloud-DLNA | friendly name of the DLNA service | | NEXTCLOUD_DLNA_FRIENDLY_NAME | Nextcloud-DLNA | friendly name of the DLNA service |
| NEXTCLOUD_DATA_DIR | | nextcloud installation directory (that ends with /data) | | NEXTCLOUD_DATA_DIR | | nextcloud installation directory (that ends with /data) |
| NEXTCLOUD_DB_TYPE | mariadb | nextcloud database type (mysql, mariadb, postgresql) |
| NEXTCLOUD_DB_HOST | localhost | nextcloud database host | | NEXTCLOUD_DB_HOST | localhost | nextcloud database host |
| NEXTCLOUD_DB_PORT | 3306 | nextcloud database port | | NEXTCLOUD_DB_PORT | 3306 | nextcloud database port |
| NEXTCLOUD_DB_NAME | nextcloud | nextcloud database name | | NEXTCLOUD_DB_NAME | nextcloud | nextcloud database name |

View file

@ -42,6 +42,7 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.mariadb.jdbc:mariadb-java-client:3.2.0' implementation 'org.mariadb.jdbc:mariadb-java-client:3.2.0'
implementation 'org.postgresql:postgresql:42.6.0'
implementation 'org.jupnp:org.jupnp:2.7.1' implementation 'org.jupnp:org.jupnp:2.7.1'
implementation 'org.jupnp:org.jupnp.support:2.7.1' implementation 'org.jupnp:org.jupnp.support:2.7.1'

View file

@ -0,0 +1,57 @@
package net.schowek.nextclouddlna.util
import mu.KLogging
import net.schowek.nextclouddlna.util.NextcloudDBType.*
import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.Profile
import org.springframework.jdbc.datasource.DriverManagerDataSource
@Configuration
@Profile("!integration")
@EnableConfigurationProperties(NextcloudDBConfigProperties::class)
class DriverManagerDataSourceConfig {
@Bean
fun driverManagerDataSource(props: NextcloudDBConfigProperties): DriverManagerDataSource {
logger.info { "Using Nextcloud DB connection parameters: $props" }
return DriverManagerDataSource().also { dataSource ->
when (props.type) {
MARIADB, MYSQL -> {
dataSource.setDriverClassName("org.mariadb.jdbc.Driver");
dataSource.url = "jdbc:mariadb://${props.host}:${props.port}/${props.name}";
}
POSTGRES -> {
dataSource.setDriverClassName("org.mariadb.jdbc.Driver");
dataSource.url = "jdbc:postgresql://${props.host}:${props.port}/${props.name}";
dataSource.connectionProperties?.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect")
}
else -> throw RuntimeException("Unsupported DB type")
}
dataSource.username = props.user;
dataSource.password = props.pass;
}
}
companion object : KLogging()
}
@Profile("!integration")
@ConfigurationProperties(prefix = "nextcloud.db")
data class NextcloudDBConfigProperties(
val type: NextcloudDBType,
val host: String,
val port: Int,
val name: String,
val user: String,
val pass: String
)
enum class NextcloudDBType(val value: String) {
MYSQL("mysql"),
MARIADB("mariadb"),
POSTGRES("postgres")
}

View file

@ -5,13 +5,15 @@ server:
nextcloud: nextcloud:
filesDir: ${NEXTCLOUD_DATA_DIR} filesDir: ${NEXTCLOUD_DATA_DIR}
db:
type: ${NEXTCLOUD_DB_TYPE:mariadb}
host: ${NEXTCLOUD_DB_HOST:localhost}
port: ${NEXTCLOUD_DB_PORT:3306}
name: ${NEXTCLOUD_DB_NAME:nextcloud}
user: ${NEXTCLOUD_DB_USER:nextcloud}
pass: ${NEXTCLOUD_DB_PASS:nextcloud}
spring: spring:
datasource:
url: "jdbc:mariadb://${NEXTCLOUD_DB_HOST:localhost}:${NEXTCLOUD_DB_PORT:3306}/${NEXTCLOUD_DB_NAME:nextcloud}"
username: ${NEXTCLOUD_DB_USER:nextcloud}
password: ${NEXTCLOUD_DB_PASS:nextcloud}
driver-class-name: org.mariadb.jdbc.Driver
jpa: jpa:
hibernate: hibernate:
ddl-auto: none ddl-auto: none