feat: WIP

This commit is contained in:
2025-03-05 07:52:47 -05:00
parent 43914716d6
commit 65f05dfc20
8 changed files with 178 additions and 179 deletions

View File

@@ -4,58 +4,58 @@ import Logging
import PsychrometricClient
import Routes
public extension DependencyValues {
var apiController: ApiController {
get { self[ApiController.self] }
set { self[ApiController.self] = newValue }
}
}
@DependencyClient
public struct ApiController: Sendable {
public var json: @Sendable (SiteRoute.Api, Logger) async throws -> (any Encodable)?
}
extension ApiController: TestDependencyKey {
public static let testValue: ApiController = Self()
}
extension ApiController: DependencyKey {
public static var liveValue: ApiController {
@Dependency(\.psychrometricClient) var psychrometricClient
return .init(json: { route, logger in
logger.debug("API Route: \(route)")
switch route {
case let .calculateAtticVentilation(request):
logger.debug("Calculating attic ventilation: \(request)")
return try await request.respond(logger: logger)
case let .calculateCapacitor(request):
logger.debug("Calculating capacitor: \(request)")
return try await request.respond(logger: logger)
case let .calculateDehumidifierSize(request):
logger.debug("Calculating dehumidifier size: \(request)")
return try await request.respond(logger)
case let .calculateFilterPressureDrop(request):
logger.debug("Calculating filter pressure drop: \(request)")
return try await request.respond(logger: logger)
case let .calculateHVACSystemPerformance(request):
logger.debug("Calculating hvac system performance: \(request)")
return try await request.respond(logger: logger)
case let .calculateMoldRisk(request):
logger.debug("Calculating mold risk: \(request)")
return try await psychrometricClient.respond(request, logger)
case let .calculateRoomPressure(request):
logger.debug("Calculating room pressure: \(request)")
return try await request.respond(logger: logger)
}
})
}
}
// public extension DependencyValues {
// var apiController: ApiController {
// get { self[ApiController.self] }
// set { self[ApiController.self] = newValue }
// }
// }
//
// @DependencyClient
// public struct ApiController: Sendable {
// public var json: @Sendable (SiteRoute.Api, Logger) async throws -> (any Encodable)?
// }
//
// extension ApiController: TestDependencyKey {
// public static let testValue: ApiController = Self()
// }
//
// extension ApiController: DependencyKey {
// public static var liveValue: ApiController {
// @Dependency(\.psychrometricClient) var psychrometricClient
//
// return .init(json: { route, logger in
// logger.debug("API Route: \(route)")
//
// switch route {
// case let .calculateAtticVentilation(request):
// logger.debug("Calculating attic ventilation: \(request)")
// return try await request.respond(logger: logger)
//
// case let .calculateCapacitor(request):
// logger.debug("Calculating capacitor: \(request)")
// return try await request.respond(logger: logger)
//
// case let .calculateDehumidifierSize(request):
// logger.debug("Calculating dehumidifier size: \(request)")
// return try await request.respond(logger)
//
// case let .calculateFilterPressureDrop(request):
// logger.debug("Calculating filter pressure drop: \(request)")
// return try await request.respond(logger: logger)
//
// case let .calculateHVACSystemPerformance(request):
// logger.debug("Calculating hvac system performance: \(request)")
// return try await request.respond(logger: logger)
//
// case let .calculateMoldRisk(request):
// logger.debug("Calculating mold risk: \(request)")
// return try await psychrometricClient.respond(request, logger)
//
// case let .calculateRoomPressure(request):
// logger.debug("Calculating room pressure: \(request)")
// return try await request.respond(logger: logger)
// }
// })
// }
// }

View File

@@ -108,6 +108,7 @@ private extension HeatingBalancePoint.Request.Thermal {
switch buildingHeatLoss {
case let .known(btu: btu): return btu
case let .estimated(squareFeet: squareFeet):
// TODO: Should this be 65 - designTemperature
return squareFeet * climateZone!.averageHeatLossPerSquareFoot * (70 - designTemperature)
}
}