feat: Initial interpolation calculations, requires tests.

This commit is contained in:
2025-03-12 21:52:42 -04:00
parent 5c684d0537
commit ec58ca6364
4 changed files with 411 additions and 77 deletions

View File

@@ -0,0 +1,45 @@
import Models
import Validations
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)
}
}
}