56 lines
1.8 KiB
Swift
56 lines
1.8 KiB
Swift
import Models
|
|
import Validations
|
|
|
|
extension Capacity.Cooling: AsyncValidatable {
|
|
public var body: some AsyncValidation<Self> {
|
|
AsyncValidator.accumulating {
|
|
AsyncValidator.greaterThan(\.total, 0)
|
|
AsyncValidator.greaterThan(\.sensible, 0)
|
|
AsyncValidator.greaterThanOrEquals(\.total, \.sensible)
|
|
}
|
|
}
|
|
}
|
|
|
|
extension Capacity.ManufacturersCooling: AsyncValidatable {
|
|
public var body: some AsyncValidation<Self> {
|
|
AsyncValidator.accumulating {
|
|
AsyncValidator.greaterThan(\.airflow, 0)
|
|
AsyncValidator.validate(\.capacity)
|
|
AsyncValidator.validate(\.otherCapacity, with: OptionalContainerValidator())
|
|
}
|
|
}
|
|
}
|
|
|
|
extension Capacity.ManufacturersCooling.Container: AsyncValidatable {
|
|
public var body: some AsyncValidation<Self> {
|
|
AsyncValidator.accumulating {
|
|
AsyncValidator.greaterThan(\.dryBulbTemperature, 0)
|
|
AsyncValidator.greaterThan(\.wetBulbTemperature, 0)
|
|
AsyncValidator.greaterThan(\.totalCapacity, 0)
|
|
AsyncValidator.greaterThan(\.sensibleCapacity, 0)
|
|
AsyncValidator.greaterThanOrEquals(\.totalCapacity, \.sensibleCapacity)
|
|
}
|
|
}
|
|
}
|
|
|
|
private struct OptionalContainerValidator: AsyncValidation {
|
|
typealias Value = Capacity.ManufacturersCooling.Container?
|
|
|
|
func validate(_ value: Capacity.ManufacturersCooling.Container?) async throws {
|
|
guard let value else { return }
|
|
try await value.validate()
|
|
}
|
|
|
|
}
|
|
|
|
extension Capacity.ManufacturersContainer: AsyncValidatable {
|
|
public var body: some AsyncValidation<Self> {
|
|
AsyncValidator.accumulating {
|
|
AsyncValidator.greaterThan(\.wetBulb, 0)
|
|
AsyncValidator.greaterThan(\.totalCapacity, 0)
|
|
AsyncValidator.greaterThan(\.sensibleCapacity, 0)
|
|
AsyncValidator.greaterThanOrEquals(\.totalCapacity, \.sensibleCapacity)
|
|
}
|
|
}
|
|
}
|