36 lines
1.2 KiB
Swift
36 lines
1.2 KiB
Swift
import DatabaseClient
|
|
import Dependencies
|
|
import ManualDClient
|
|
import ManualDCore
|
|
|
|
extension ManualDClient {
|
|
|
|
func frictionRate(projectID: Project.ID) async throws -> ProjectClient.FrictionRateResponse {
|
|
@Dependency(\.database) var database
|
|
|
|
let componentLosses = try await database.componentLoss.fetch(projectID)
|
|
let lengths = try await database.effectiveLength.fetchMax(projectID)
|
|
|
|
let equipmentInfo = try await database.equipment.fetch(projectID)
|
|
guard let staticPressure = equipmentInfo?.staticPressure else {
|
|
return .init(componentLosses: componentLosses, equivalentLengths: lengths)
|
|
}
|
|
|
|
guard let totalEquivalentLength = lengths.total else {
|
|
return .init(componentLosses: componentLosses, equivalentLengths: lengths)
|
|
}
|
|
|
|
return try await .init(
|
|
componentLosses: componentLosses,
|
|
equivalentLengths: lengths,
|
|
frictionRate: frictionRate(
|
|
.init(
|
|
externalStaticPressure: staticPressure,
|
|
componentPressureLosses: database.componentLoss.fetch(projectID),
|
|
totalEffectiveLength: Int(totalEquivalentLength)
|
|
)
|
|
)
|
|
)
|
|
}
|
|
}
|