From cce99ce5e97cd69392aab850a20d5fd3858b26b2 Mon Sep 17 00:00:00 2001 From: Michael Housh Date: Wed, 26 Feb 2025 08:27:39 -0500 Subject: [PATCH] feat: Refactors / renames some modules. --- Package.swift | 22 +++---------------- Sources/ApiController/ApiController.swift | 15 +++++++++++++ .../Internal/MoldRisk.swift} | 20 ++--------------- .../Middleware/DependenciesMiddleware.swift | 4 ++-- .../Extensions/HTMLAttributeExtensions.swift | 0 .../Extensions/Href+route.swift | 0 .../{Interface.swift => Live.swift} | 10 +++++++++ .../Views/MainPage.swift | 0 .../Views/MoldRisk.swift | 0 .../Views/SVG.swift | 0 .../Views/Styleguide.swift | 0 Sources/ViewControllerLive/Live.swift | 14 ------------ 12 files changed, 32 insertions(+), 53 deletions(-) rename Sources/{ApiControllerLive/Live.swift => ApiController/Internal/MoldRisk.swift} (76%) rename Sources/{ViewControllerLive => ViewController}/Extensions/HTMLAttributeExtensions.swift (100%) rename Sources/{ViewControllerLive => ViewController}/Extensions/Href+route.swift (100%) rename Sources/ViewController/{Interface.swift => Live.swift} (75%) rename Sources/{ViewControllerLive => ViewController}/Views/MainPage.swift (100%) rename Sources/{ViewControllerLive => ViewController}/Views/MoldRisk.swift (100%) rename Sources/{ViewControllerLive => ViewController}/Views/SVG.swift (100%) rename Sources/{ViewControllerLive => ViewController}/Views/Styleguide.swift (100%) delete mode 100644 Sources/ViewControllerLive/Live.swift diff --git a/Package.swift b/Package.swift index 4f7e605..750b2f4 100644 --- a/Package.swift +++ b/Package.swift @@ -9,10 +9,8 @@ let package = Package( products: [ .executable(name: "App", targets: ["App"]), .library(name: "ApiController", targets: ["ApiController"]), - .library(name: "ApiControllerLive", targets: ["ApiControllerLive"]), .library(name: "Routes", targets: ["Routes"]), - .library(name: "ViewController", targets: ["ViewController"]), - .library(name: "ViewControllerLive", targets: ["ViewControllerLive"]) + .library(name: "ViewController", targets: ["ViewController"]) ], dependencies: [ // 💧 A server-side Swift web framework. @@ -33,8 +31,8 @@ let package = Package( .executableTarget( name: "App", dependencies: [ - "ViewControllerLive", - "ApiControllerLive", + "ApiController", + "ViewController", .product(name: "Vapor", package: "vapor"), .product(name: "NIOCore", package: "swift-nio"), .product(name: "NIOPosix", package: "swift-nio"), @@ -60,13 +58,6 @@ let package = Package( ], swiftSettings: swiftSettings ), - .target( - name: "ApiControllerLive", - dependencies: [ - "ApiController" - ], - swiftSettings: swiftSettings - ), .target( name: "Routes", dependencies: [ @@ -85,13 +76,6 @@ let package = Package( .product(name: "Elementary", package: "elementary") ], swiftSettings: swiftSettings - ), - .target( - name: "ViewControllerLive", - dependencies: [ - "ViewController" - ], - swiftSettings: swiftSettings ) ], swiftLanguageModes: [.v5] diff --git a/Sources/ApiController/ApiController.swift b/Sources/ApiController/ApiController.swift index 65a740e..167354a 100644 --- a/Sources/ApiController/ApiController.swift +++ b/Sources/ApiController/ApiController.swift @@ -1,6 +1,7 @@ import Dependencies import DependenciesMacros import Logging +import PsychrometricClient import Routes public extension DependencyValues { @@ -18,3 +19,17 @@ public struct ApiController: Sendable { 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 + switch route { + case let .calculateMoldRisk(request): + logger.info("Calculating mold risk: \(request)") + return try await psychrometricClient.respond(request, logger) + } + }) + } +} diff --git a/Sources/ApiControllerLive/Live.swift b/Sources/ApiController/Internal/MoldRisk.swift similarity index 76% rename from Sources/ApiControllerLive/Live.swift rename to Sources/ApiController/Internal/MoldRisk.swift index 4939688..522d718 100644 --- a/Sources/ApiControllerLive/Live.swift +++ b/Sources/ApiController/Internal/MoldRisk.swift @@ -1,30 +1,14 @@ -@_exported import ApiController -import Dependencies import Logging import PsychrometricClient import Routes -extension ApiController: DependencyKey { - public static var liveValue: ApiController { - @Dependency(\.psychrometricClient) var psychrometricClient - - return .init(json: { route, logger in - switch route { - case let .calculateMoldRisk(request): - logger.info("Calculating mold risk: \(request)") - return try await psychrometricClient.resond(request, logger) - } - }) - } -} - -private extension PsychrometricClient { +extension PsychrometricClient { private func calculateProperties(_ request: MoldRisk.Request) async throws -> PsychrometricProperties { try await psychrometricProperties(.dryBulb(request.temperature, relativeHumidity: request.humidity)) } - func resond(_ request: MoldRisk.Request, _ logger: Logger) async throws -> MoldRisk.Response { + func respond(_ request: MoldRisk.Request, _ logger: Logger) async throws -> MoldRisk.Response { let properties = try await calculateProperties(request) let riskLevel = MoldRisk.RiskLevel(humidity: request.humidity) diff --git a/Sources/App/Middleware/DependenciesMiddleware.swift b/Sources/App/Middleware/DependenciesMiddleware.swift index 935e79f..1996fb9 100644 --- a/Sources/App/Middleware/DependenciesMiddleware.swift +++ b/Sources/App/Middleware/DependenciesMiddleware.swift @@ -1,8 +1,8 @@ -import ApiControllerLive +import ApiController import Dependencies import PsychrometricClientLive import Vapor -import ViewControllerLive +import ViewController // Taken from discussions page on `swift-dependencies`. diff --git a/Sources/ViewControllerLive/Extensions/HTMLAttributeExtensions.swift b/Sources/ViewController/Extensions/HTMLAttributeExtensions.swift similarity index 100% rename from Sources/ViewControllerLive/Extensions/HTMLAttributeExtensions.swift rename to Sources/ViewController/Extensions/HTMLAttributeExtensions.swift diff --git a/Sources/ViewControllerLive/Extensions/Href+route.swift b/Sources/ViewController/Extensions/Href+route.swift similarity index 100% rename from Sources/ViewControllerLive/Extensions/Href+route.swift rename to Sources/ViewController/Extensions/Href+route.swift diff --git a/Sources/ViewController/Interface.swift b/Sources/ViewController/Live.swift similarity index 75% rename from Sources/ViewController/Interface.swift rename to Sources/ViewController/Live.swift index d0ac603..5b80cf6 100644 --- a/Sources/ViewController/Interface.swift +++ b/Sources/ViewController/Live.swift @@ -20,3 +20,13 @@ public struct ViewController: Sendable { extension ViewController: TestDependencyKey { public static let testValue: ViewController = Self() } + +extension ViewController: DependencyKey { + public static var liveValue: ViewController { + .init(view: { _ in + MainPage { + MoldRiskForm() + } + }) + } +} diff --git a/Sources/ViewControllerLive/Views/MainPage.swift b/Sources/ViewController/Views/MainPage.swift similarity index 100% rename from Sources/ViewControllerLive/Views/MainPage.swift rename to Sources/ViewController/Views/MainPage.swift diff --git a/Sources/ViewControllerLive/Views/MoldRisk.swift b/Sources/ViewController/Views/MoldRisk.swift similarity index 100% rename from Sources/ViewControllerLive/Views/MoldRisk.swift rename to Sources/ViewController/Views/MoldRisk.swift diff --git a/Sources/ViewControllerLive/Views/SVG.swift b/Sources/ViewController/Views/SVG.swift similarity index 100% rename from Sources/ViewControllerLive/Views/SVG.swift rename to Sources/ViewController/Views/SVG.swift diff --git a/Sources/ViewControllerLive/Views/Styleguide.swift b/Sources/ViewController/Views/Styleguide.swift similarity index 100% rename from Sources/ViewControllerLive/Views/Styleguide.swift rename to Sources/ViewController/Views/Styleguide.swift diff --git a/Sources/ViewControllerLive/Live.swift b/Sources/ViewControllerLive/Live.swift deleted file mode 100644 index 5a87ad5..0000000 --- a/Sources/ViewControllerLive/Live.swift +++ /dev/null @@ -1,14 +0,0 @@ -import Dependencies -import Elementary -import Routes -@_exported import ViewController - -extension ViewController: DependencyKey { - public static var liveValue: ViewController { - .init(view: { _ in - MainPage { - MoldRiskForm() - } - }) - } -}