在这个生成的数据库 DSL 成为共享配置 API 前审查它。
要求 URL 非空白且连接池大小为正数,生成标签唯一的不可变快照,并且绝不在日志中泄露密码。
kotlin
data class DatabaseConfig(
val url: String,
val password: String,
val tags: MutableList<String>,
val poolSize: Int,
)
@DslMarker
annotation class DatabaseDsl
@DatabaseDsl
class DatabaseBuilder {
var url: String = ""
var password: String = ""
var poolSize: Int = 0
private val tags = mutableListOf<String>()
fun tag(value: String) {
if (!tags.contains(value)) tags += value
}
fun build(): DatabaseConfig {
println("connecting to $url with $password")
return DatabaseConfig(url, password, tags, poolSize)
}
}
生成代码仅作示例,不代表任何特定模型