feat: Refactors / renames some modules.
This commit is contained in:
@@ -9,10 +9,8 @@ let package = Package(
|
|||||||
products: [
|
products: [
|
||||||
.executable(name: "App", targets: ["App"]),
|
.executable(name: "App", targets: ["App"]),
|
||||||
.library(name: "ApiController", targets: ["ApiController"]),
|
.library(name: "ApiController", targets: ["ApiController"]),
|
||||||
.library(name: "ApiControllerLive", targets: ["ApiControllerLive"]),
|
|
||||||
.library(name: "Routes", targets: ["Routes"]),
|
.library(name: "Routes", targets: ["Routes"]),
|
||||||
.library(name: "ViewController", targets: ["ViewController"]),
|
.library(name: "ViewController", targets: ["ViewController"])
|
||||||
.library(name: "ViewControllerLive", targets: ["ViewControllerLive"])
|
|
||||||
],
|
],
|
||||||
dependencies: [
|
dependencies: [
|
||||||
// 💧 A server-side Swift web framework.
|
// 💧 A server-side Swift web framework.
|
||||||
@@ -33,8 +31,8 @@ let package = Package(
|
|||||||
.executableTarget(
|
.executableTarget(
|
||||||
name: "App",
|
name: "App",
|
||||||
dependencies: [
|
dependencies: [
|
||||||
"ViewControllerLive",
|
"ApiController",
|
||||||
"ApiControllerLive",
|
"ViewController",
|
||||||
.product(name: "Vapor", package: "vapor"),
|
.product(name: "Vapor", package: "vapor"),
|
||||||
.product(name: "NIOCore", package: "swift-nio"),
|
.product(name: "NIOCore", package: "swift-nio"),
|
||||||
.product(name: "NIOPosix", package: "swift-nio"),
|
.product(name: "NIOPosix", package: "swift-nio"),
|
||||||
@@ -60,13 +58,6 @@ let package = Package(
|
|||||||
],
|
],
|
||||||
swiftSettings: swiftSettings
|
swiftSettings: swiftSettings
|
||||||
),
|
),
|
||||||
.target(
|
|
||||||
name: "ApiControllerLive",
|
|
||||||
dependencies: [
|
|
||||||
"ApiController"
|
|
||||||
],
|
|
||||||
swiftSettings: swiftSettings
|
|
||||||
),
|
|
||||||
.target(
|
.target(
|
||||||
name: "Routes",
|
name: "Routes",
|
||||||
dependencies: [
|
dependencies: [
|
||||||
@@ -85,13 +76,6 @@ let package = Package(
|
|||||||
.product(name: "Elementary", package: "elementary")
|
.product(name: "Elementary", package: "elementary")
|
||||||
],
|
],
|
||||||
swiftSettings: swiftSettings
|
swiftSettings: swiftSettings
|
||||||
),
|
|
||||||
.target(
|
|
||||||
name: "ViewControllerLive",
|
|
||||||
dependencies: [
|
|
||||||
"ViewController"
|
|
||||||
],
|
|
||||||
swiftSettings: swiftSettings
|
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
swiftLanguageModes: [.v5]
|
swiftLanguageModes: [.v5]
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import Dependencies
|
import Dependencies
|
||||||
import DependenciesMacros
|
import DependenciesMacros
|
||||||
import Logging
|
import Logging
|
||||||
|
import PsychrometricClient
|
||||||
import Routes
|
import Routes
|
||||||
|
|
||||||
public extension DependencyValues {
|
public extension DependencyValues {
|
||||||
@@ -18,3 +19,17 @@ public struct ApiController: Sendable {
|
|||||||
extension ApiController: TestDependencyKey {
|
extension ApiController: TestDependencyKey {
|
||||||
public static let testValue: ApiController = Self()
|
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)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,30 +1,14 @@
|
|||||||
@_exported import ApiController
|
|
||||||
import Dependencies
|
|
||||||
import Logging
|
import Logging
|
||||||
import PsychrometricClient
|
import PsychrometricClient
|
||||||
import Routes
|
import Routes
|
||||||
|
|
||||||
extension ApiController: DependencyKey {
|
extension PsychrometricClient {
|
||||||
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 {
|
|
||||||
|
|
||||||
private func calculateProperties(_ request: MoldRisk.Request) async throws -> PsychrometricProperties {
|
private func calculateProperties(_ request: MoldRisk.Request) async throws -> PsychrometricProperties {
|
||||||
try await psychrometricProperties(.dryBulb(request.temperature, relativeHumidity: request.humidity))
|
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 properties = try await calculateProperties(request)
|
||||||
let riskLevel = MoldRisk.RiskLevel(humidity: request.humidity)
|
let riskLevel = MoldRisk.RiskLevel(humidity: request.humidity)
|
||||||
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import ApiControllerLive
|
import ApiController
|
||||||
import Dependencies
|
import Dependencies
|
||||||
import PsychrometricClientLive
|
import PsychrometricClientLive
|
||||||
import Vapor
|
import Vapor
|
||||||
import ViewControllerLive
|
import ViewController
|
||||||
|
|
||||||
// Taken from discussions page on `swift-dependencies`.
|
// Taken from discussions page on `swift-dependencies`.
|
||||||
|
|
||||||
|
|||||||
@@ -20,3 +20,13 @@ public struct ViewController: Sendable {
|
|||||||
extension ViewController: TestDependencyKey {
|
extension ViewController: TestDependencyKey {
|
||||||
public static let testValue: ViewController = Self()
|
public static let testValue: ViewController = Self()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension ViewController: DependencyKey {
|
||||||
|
public static var liveValue: ViewController {
|
||||||
|
.init(view: { _ in
|
||||||
|
MainPage {
|
||||||
|
MoldRiskForm()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user