63 lines
2.0 KiB
Kotlin
63 lines
2.0 KiB
Kotlin
package solutions.bitbadger.documents
|
|
|
|
import kotlinx.serialization.json.Json
|
|
import java.sql.Connection
|
|
import java.sql.DriverManager
|
|
|
|
object Configuration {
|
|
|
|
/**
|
|
* JSON serializer; replace to configure with non-default options
|
|
*
|
|
* The default sets `encodeDefaults` to `true` and `explicitNulls` to `false`; see
|
|
* https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/json.md for all configuration options
|
|
*/
|
|
var json = Json {
|
|
encodeDefaults = true
|
|
explicitNulls = false
|
|
}
|
|
|
|
/** The field in which a document's ID is stored */
|
|
var idField = "id"
|
|
|
|
/** The automatic ID strategy to use */
|
|
var autoIdStrategy = AutoId.DISABLED
|
|
|
|
/** The length of automatic random hex character string */
|
|
var idStringLength = 16
|
|
|
|
/** The derived dialect value from the connection string */
|
|
internal var dialectValue: Dialect? = null
|
|
|
|
/** The connection string for the JDBC connection */
|
|
var connectionString: String? = null
|
|
set(value) {
|
|
field = value
|
|
dialectValue = if (value.isNullOrBlank()) null else Dialect.deriveFromConnectionString(value)
|
|
}
|
|
|
|
/**
|
|
* Retrieve a new connection to the configured database
|
|
*
|
|
* @return A new connection to the configured database
|
|
* @throws IllegalArgumentException If the connection string is not set before calling this
|
|
*/
|
|
fun dbConn(): Connection {
|
|
if (connectionString == null) {
|
|
throw IllegalArgumentException("Please provide a connection string before attempting data access")
|
|
}
|
|
return DriverManager.getConnection(connectionString)
|
|
}
|
|
|
|
/**
|
|
* The dialect in use
|
|
*
|
|
* @param process The process being attempted
|
|
* @return The dialect for the current connection
|
|
* @throws DocumentException If the dialect has not been set
|
|
*/
|
|
fun dialect(process: String? = null): Dialect =
|
|
dialectValue ?: throw DocumentException(
|
|
"Database mode not set" + if (process == null) "" else "; cannot $process")
|
|
}
|