审查生成的数据库 DSL

来自 DSL
Kotlin 2.4.10 高级 6分钟 找出 4处问题

在这个生成的数据库 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)
    }
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误