feat: Working on dehumidifier sizing, api and routes implemented, views are not complete.

This commit is contained in:
2025-02-27 17:10:25 -05:00
parent fad00520b0
commit dc01477c3e
12 changed files with 344 additions and 14 deletions

View File

@@ -22,11 +22,18 @@ public enum SiteRoute: Equatable, Sendable {
public extension SiteRoute {
enum Api: Equatable, Sendable {
case calculateDehumidifierSize(DehumidifierSize.Request)
case calculateMoldRisk(MoldRisk.Request)
static let rootPath = Path { "api"; "v1" }
public static let router = OneOf {
Route(.case(Self.calculateDehumidifierSize)) {
Path { "api"; "v1"; "calculateDehumidifierSize" }
Method.post
Body(.json(DehumidifierSize.Request.self))
}
Route(.case(Self.calculateMoldRisk)) {
Path { "api"; "v1"; "calculateMoldRisk" }
Method.post
@@ -40,17 +47,47 @@ public extension SiteRoute {
enum View: Equatable, Sendable {
case index
case dehumidifierSize(DehumidifierSize)
case moldRisk(MoldRisk)
public static let router = OneOf {
Route(.case(Self.index)) {
Method.get
}
Route(.case(Self.dehumidifierSize)) {
DehumidifierSize.router
}
Route(.case(Self.moldRisk)) {
MoldRisk.router
}
}
public enum DehumidifierSize: Equatable, Sendable {
case index
case submit(Routes.DehumidifierSize.Request)
static let rootPath = "dehumidifier-size"
public static let router = OneOf {
Route(.case(Self.index)) {
Path { rootPath }
Method.get
}
Route(.case(Self.submit)) {
Path { rootPath }
Method.post
Body {
FormData {
Field("latentLoad") { Double.parser() }
Field("temperature") { Double.parser() }
Field("humidity") { Double.parser() }
}
.map(.memberwise(Routes.DehumidifierSize.Request.init))
}
}
}
}
public enum MoldRisk: Equatable, Sendable {
case index
case submit(Routes.MoldRisk.Request)