WIP: Attempt at breaking out some logic / middleware between database and view layer, to remove some code from the view controller. Not complete, maybe revert.
This commit is contained in:
@@ -24,42 +24,42 @@ extension DatabaseClient.Projects {
|
||||
}
|
||||
}
|
||||
|
||||
extension DatabaseClient {
|
||||
|
||||
func calculateDuctSizes(
|
||||
projectID: Project.ID
|
||||
) async throws -> (rooms: [DuctSizing.RoomContainer], trunks: [DuctSizing.TrunkContainer]) {
|
||||
@Dependency(\.manualD) var manualD
|
||||
|
||||
return try await manualD.calculate(
|
||||
rooms: rooms.fetch(projectID),
|
||||
trunks: trunkSizes.fetch(projectID),
|
||||
designFrictionRateResult: designFrictionRate(projectID: projectID),
|
||||
projectSHR: projects.getSensibleHeatRatio(projectID)
|
||||
)
|
||||
}
|
||||
|
||||
func designFrictionRate(
|
||||
projectID: Project.ID
|
||||
) async throws -> (EquipmentInfo, EffectiveLength.MaxContainer, Double)? {
|
||||
guard let equipmentInfo = try await equipment.fetch(projectID) else {
|
||||
return nil
|
||||
}
|
||||
|
||||
let equivalentLengths = try await effectiveLength.fetchMax(projectID)
|
||||
guard let tel = equivalentLengths.total else { return nil }
|
||||
|
||||
let componentLosses = try await componentLoss.fetch(projectID)
|
||||
guard componentLosses.count > 0 else { return nil }
|
||||
|
||||
let availableStaticPressure =
|
||||
equipmentInfo.staticPressure - componentLosses.total
|
||||
|
||||
let designFrictionRate = (availableStaticPressure * 100) / tel
|
||||
|
||||
return (equipmentInfo, equivalentLengths, designFrictionRate)
|
||||
}
|
||||
}
|
||||
// extension DatabaseClient {
|
||||
//
|
||||
// func calculateDuctSizes(
|
||||
// projectID: Project.ID
|
||||
// ) async throws -> (rooms: [DuctSizing.RoomContainer], trunks: [DuctSizing.TrunkContainer]) {
|
||||
// @Dependency(\.manualD) var manualD
|
||||
//
|
||||
// return try await manualD.calculate(
|
||||
// rooms: rooms.fetch(projectID),
|
||||
// trunks: trunkSizes.fetch(projectID),
|
||||
// designFrictionRateResult: designFrictionRate(projectID: projectID),
|
||||
// projectSHR: projects.getSensibleHeatRatio(projectID)
|
||||
// )
|
||||
// }
|
||||
//
|
||||
// func designFrictionRate(
|
||||
// projectID: Project.ID
|
||||
// ) async throws -> (EquipmentInfo, EffectiveLength.MaxContainer, Double)? {
|
||||
// guard let equipmentInfo = try await equipment.fetch(projectID) else {
|
||||
// return nil
|
||||
// }
|
||||
//
|
||||
// let equivalentLengths = try await effectiveLength.fetchMax(projectID)
|
||||
// guard let tel = equivalentLengths.total else { return nil }
|
||||
//
|
||||
// let componentLosses = try await componentLoss.fetch(projectID)
|
||||
// guard componentLosses.count > 0 else { return nil }
|
||||
//
|
||||
// let availableStaticPressure =
|
||||
// equipmentInfo.staticPressure - componentLosses.total
|
||||
//
|
||||
// let designFrictionRate = (availableStaticPressure * 100) / tel
|
||||
//
|
||||
// return (equipmentInfo, equivalentLengths, designFrictionRate)
|
||||
// }
|
||||
// }
|
||||
|
||||
extension DatabaseClient.ComponentLoss {
|
||||
|
||||
|
||||
@@ -1,38 +1,38 @@
|
||||
import Logging
|
||||
import ManualDClient
|
||||
import ManualDCore
|
||||
|
||||
extension ManualDClient {
|
||||
|
||||
func calculate(
|
||||
rooms: [Room],
|
||||
trunks: [DuctSizing.TrunkSize],
|
||||
designFrictionRateResult: (EquipmentInfo, EffectiveLength.MaxContainer, Double)?,
|
||||
projectSHR: Double?,
|
||||
logger: Logger? = nil
|
||||
) async throws -> (rooms: [DuctSizing.RoomContainer], trunks: [DuctSizing.TrunkContainer]) {
|
||||
guard let designFrictionRateResult else { return ([], []) }
|
||||
let equipmentInfo = designFrictionRateResult.0
|
||||
let effectiveLengths = designFrictionRateResult.1
|
||||
let designFrictionRate = designFrictionRateResult.2
|
||||
|
||||
guard let maxSupply = effectiveLengths.supply else { return ([], []) }
|
||||
guard let maxReturn = effectiveLengths.return else { return ([], []) }
|
||||
|
||||
let ductRooms = try await self.calculateSizes(
|
||||
rooms: rooms,
|
||||
trunks: trunks,
|
||||
equipmentInfo: equipmentInfo,
|
||||
maxSupplyLength: maxSupply,
|
||||
maxReturnLength: maxReturn,
|
||||
designFrictionRate: designFrictionRate,
|
||||
projectSHR: projectSHR ?? 1.0,
|
||||
logger: logger
|
||||
)
|
||||
|
||||
// logger?.debug("Rooms: \(ductRooms)")
|
||||
|
||||
return ductRooms
|
||||
|
||||
}
|
||||
}
|
||||
// import Logging
|
||||
// import ManualDClient
|
||||
// import ManualDCore
|
||||
//
|
||||
// extension ManualDClient {
|
||||
//
|
||||
// func calculate(
|
||||
// rooms: [Room],
|
||||
// trunks: [DuctSizing.TrunkSize],
|
||||
// designFrictionRateResult: (EquipmentInfo, EffectiveLength.MaxContainer, Double)?,
|
||||
// projectSHR: Double?,
|
||||
// logger: Logger? = nil
|
||||
// ) async throws -> (rooms: [DuctSizing.RoomContainer], trunks: [DuctSizing.TrunkContainer]) {
|
||||
// guard let designFrictionRateResult else { return ([], []) }
|
||||
// let equipmentInfo = designFrictionRateResult.0
|
||||
// let effectiveLengths = designFrictionRateResult.1
|
||||
// let designFrictionRate = designFrictionRateResult.2
|
||||
//
|
||||
// guard let maxSupply = effectiveLengths.supply else { return ([], []) }
|
||||
// guard let maxReturn = effectiveLengths.return else { return ([], []) }
|
||||
//
|
||||
// let ductRooms = try await self.calculateSizes(
|
||||
// rooms: rooms,
|
||||
// trunks: trunks,
|
||||
// equipmentInfo: equipmentInfo,
|
||||
// maxSupplyLength: maxSupply,
|
||||
// maxReturnLength: maxReturn,
|
||||
// designFrictionRate: designFrictionRate,
|
||||
// projectSHR: projectSHR ?? 1.0,
|
||||
// logger: logger
|
||||
// )
|
||||
//
|
||||
// // logger?.debug("Rooms: \(ductRooms)")
|
||||
//
|
||||
// return ductRooms
|
||||
//
|
||||
// }
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user