This commit is contained in:
chusan
2025-05-16 19:06:18 +08:00
parent 316a3e03e1
commit 2364f29b17
44 changed files with 854 additions and 1 deletions

View File

@@ -0,0 +1,4 @@
package shared.exceptions
class ChangeUsernameException(msg: String) : RuntimeException(msg) {
}

View File

@@ -0,0 +1,4 @@
package shared.exceptions
class NotFoundException(msg: String) : RuntimeException(msg) {
}

View File

@@ -0,0 +1,15 @@
package shared.validation
abstract class AbstractValidationHandler<T> : ValidationHandler<T> {
private lateinit var nextHandler: ValidationHandler<T>
override fun setNext(handler: ValidationHandler<T>) {
nextHandler = handler
}
protected fun next(context: T) {
if (::nextHandler.isInitialized) {
nextHandler.validate(context)
}
}
}

View File

@@ -0,0 +1,22 @@
package shared.validation
class ValidationChain<T> {
private var firstHandler: ValidationHandler<T>? = null
private var lastHandler: ValidationHandler<T>? = null
fun add(handler: ValidationHandler<T>): ValidationChain<T> {
if (firstHandler == null) {
firstHandler = handler
lastHandler = handler
} else {
lastHandler?.setNext(handler)
lastHandler = handler
}
return this
}
fun validate(context: T) {
firstHandler?.validate(context)
?: throw IllegalStateException("验证链未初始化")
}
}

View File

@@ -0,0 +1,6 @@
package shared.validation
interface ValidationHandler<T> {
fun validate(context: T)
fun setNext(handler: ValidationHandler<T>)
}