feat: Begins htmx integration

This commit is contained in:
2025-02-27 12:38:08 -05:00
parent 36e00cd007
commit 3e17bf2a9a
10 changed files with 227 additions and 49 deletions

View File

@@ -4,10 +4,10 @@ import PsychrometricClient
public enum MoldRisk {
public struct Request: Codable, Equatable, Sendable {
public let temperature: DryBulb
public let humidity: RelativeHumidity
public let temperature: Double
public let humidity: Double
public init(temperature: DryBulb, humidity: RelativeHumidity) {
public init(temperature: Double, humidity: Double) {
self.temperature = temperature
self.humidity = humidity
}
@@ -41,6 +41,15 @@ public enum MoldRisk {
}
}
public extension MoldRisk.Request {
var dryBulb: DryBulb {
.fahrenheit(temperature)
}
var relativeHumidity: RelativeHumidity { humidity% }
}
#if DEBUG
import Dependencies

View File

@@ -1,5 +1,6 @@
import CasePaths
import Foundation
import PsychrometricClient
@preconcurrency import URLRouting
public enum SiteRoute: Equatable, Sendable {
@@ -52,6 +53,7 @@ public extension SiteRoute {
public enum MoldRisk: Equatable, Sendable {
case index
case submit(Routes.MoldRisk.Request)
static let rootPath = "mold-risk"
@@ -60,6 +62,22 @@ public extension SiteRoute {
Path { rootPath }
Method.get
}
Route(.case(Self.submit)) {
Path { rootPath }
Method.post
Body {
FormData {
Field("temperature") {
Double.parser()
}
Field("humidity") {
Double.parser()
}
}
.map(.memberwise(Routes.MoldRisk.Request.init))
}
}
}
}
}