feat: Initial commit
This commit is contained in:
19
Sources/ManualS/Extensions/DesignInfo+validator.swift
Normal file
19
Sources/ManualS/Extensions/DesignInfo+validator.swift
Normal file
@@ -0,0 +1,19 @@
|
||||
import Models
|
||||
import Validations
|
||||
|
||||
extension DesignInfo: AsyncValidatable {
|
||||
public var body: some AsyncValidation<Self> {
|
||||
AsyncValidator.validate(\.summer)
|
||||
}
|
||||
}
|
||||
|
||||
extension DesignInfo.Summer: AsyncValidatable {
|
||||
|
||||
public var body: some AsyncValidation<Self> {
|
||||
AsyncValidator.accumulating {
|
||||
AsyncValidator.greaterThan(\.outdoorTemperature, 0)
|
||||
AsyncValidator.greaterThan(\.indoorTemperature, 0)
|
||||
AsyncValidator.greaterThan(\.indoorHumidity, 0)
|
||||
}
|
||||
}
|
||||
}
|
||||
13
Sources/ManualS/Extensions/HeatPumpCapacity+validator.swift
Normal file
13
Sources/ManualS/Extensions/HeatPumpCapacity+validator.swift
Normal file
@@ -0,0 +1,13 @@
|
||||
import Models
|
||||
import Validations
|
||||
|
||||
extension Capacity.HeatPumpHeating: AsyncValidatable {
|
||||
|
||||
public var body: some AsyncValidation<Self> {
|
||||
AsyncValidator.accumulating {
|
||||
AsyncValidator.greaterThan(\.at47, 0)
|
||||
AsyncValidator.greaterThan(\.at17, 0)
|
||||
AsyncValidator.greaterThanOrEquals(\.at47, \.at17)
|
||||
}
|
||||
}
|
||||
}
|
||||
14
Sources/ManualS/Extensions/HouseLoad+validator.swift
Normal file
14
Sources/ManualS/Extensions/HouseLoad+validator.swift
Normal file
@@ -0,0 +1,14 @@
|
||||
import Models
|
||||
import Validations
|
||||
|
||||
extension HouseLoad: AsyncValidatable {
|
||||
|
||||
public var body: some AsyncValidation<Self> {
|
||||
AsyncValidator.accumulating {
|
||||
AsyncValidator.greaterThan(\.coolingTotal, 0)
|
||||
AsyncValidator.greaterThan(\.coolingSensible, 0)
|
||||
AsyncValidator.greaterThan(\.heating, 0)
|
||||
AsyncValidator.greaterThanOrEquals(\.coolingTotal, \.coolingSensible)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
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()
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user