mirror of
https://github.com/gotson/komga.git
synced 2025-12-16 13:33:49 +01:00
feat: expose sqlite pragma configuration
This commit is contained in:
parent
775dd5c666
commit
3c5143071c
2 changed files with 17 additions and 4 deletions
|
|
@ -4,7 +4,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties
|
|||
import org.springframework.boot.convert.DurationUnit
|
||||
import org.springframework.stereotype.Component
|
||||
import org.springframework.validation.annotation.Validated
|
||||
import org.sqlite.SQLiteConfig.TransactionMode
|
||||
import org.sqlite.SQLiteConfig.JournalMode
|
||||
import java.time.Duration
|
||||
import java.time.temporal.ChronoUnit
|
||||
import javax.validation.constraints.NotBlank
|
||||
|
|
@ -75,7 +75,12 @@ class KomgaProperties {
|
|||
@get:Positive
|
||||
var maxPoolSize: Int = 8
|
||||
|
||||
var transactionMode: TransactionMode = TransactionMode.DEFERRED
|
||||
var journalMode: JournalMode? = null
|
||||
|
||||
@DurationUnit(ChronoUnit.SECONDS)
|
||||
var busyTimeout: Duration? = null
|
||||
|
||||
var pragmas: Map<String, String> = emptyMap()
|
||||
}
|
||||
|
||||
class Lucene {
|
||||
|
|
|
|||
|
|
@ -18,14 +18,22 @@ class DataSourcesConfiguration(
|
|||
@Primary
|
||||
fun sqliteDataSource(): DataSource {
|
||||
|
||||
val extraPragmas = komgaProperties.database.pragmas.let {
|
||||
if (it.isEmpty()) ""
|
||||
else "?" + it.map { (key, value) -> "$key=$value" }.joinToString(separator = "&")
|
||||
}
|
||||
|
||||
val sqliteUdfDataSource = DataSourceBuilder.create()
|
||||
.driverClassName("org.sqlite.JDBC")
|
||||
.url("jdbc:sqlite:${komgaProperties.database.file}")
|
||||
.url("jdbc:sqlite:${komgaProperties.database.file}$extraPragmas")
|
||||
.type(SqliteUdfDataSource::class.java)
|
||||
.build()
|
||||
|
||||
sqliteUdfDataSource.setEnforceForeignKeys(true)
|
||||
sqliteUdfDataSource.setTransactionMode(komgaProperties.database.transactionMode.name)
|
||||
with(komgaProperties.database) {
|
||||
journalMode?.let { sqliteUdfDataSource.setJournalMode(it.name) }
|
||||
busyTimeout?.let { sqliteUdfDataSource.config.busyTimeout = it.toMillis().toInt() }
|
||||
}
|
||||
|
||||
val poolSize =
|
||||
if (komgaProperties.database.file.contains(":memory:")) 1
|
||||
|
|
|
|||
Loading…
Reference in a new issue