feat: Seeing if case paths can help with base route lookup.

This commit is contained in:
2025-01-21 17:12:17 -05:00
parent 66074d66f4
commit 497355ce1f
6 changed files with 55 additions and 32 deletions

View File

@@ -1,10 +1,12 @@
import CasePathsCore
import CasePaths
import Foundation
@preconcurrency import URLRouting
@CasePathable
@dynamicMemberLookup
public enum ApiRoute: Sendable, Equatable {
case employee(BaseRoute.EmployeeRoute)
case employee(EmployeeRoute)
case purchaseOrder(BaseRoute.PurchaseOrderRoute)
case user(BaseRoute.UserRoute)
case vendor(BaseRoute.VendorRoute)
@@ -15,7 +17,7 @@ public enum ApiRoute: Sendable, Equatable {
public static let router = OneOf {
Route(.case(Self.employee)) {
rootPath
BaseRoute.EmployeeRoute.router
EmployeeRoute.router
}
Route(.case(Self.purchaseOrder)) {
rootPath
@@ -34,4 +36,21 @@ public enum ApiRoute: Sendable, Equatable {
BaseRoute.VendorBranchRoute.router
}
}
@CasePathable
@dynamicMemberLookup
public enum EmployeeRoute: Sendable, Equatable {
case base(BaseRoute.EmployeeRoute)
case delete(id: Employee.ID)
public static let router = OneOf {
Route(.case(Self.base)) {
BaseRoute.EmployeeRoute.router
}
Route(.case(Self.delete(id:))) {
Path { BaseRoute.EmployeeRoute.rootPath; UUID.parser() }
Method.delete
}
}
}
}

View File

@@ -1,4 +1,4 @@
import CasePathsCore
import CasePaths
import Foundation
@preconcurrency import URLRouting
@@ -6,9 +6,10 @@ public enum BaseRoute {}
public extension BaseRoute {
@CasePathable
@dynamicMemberLookup
enum EmployeeRoute: Sendable, Equatable {
case create(Employee.Create)
case delete(id: Employee.ID)
case get(id: Employee.ID)
case index
case update(id: Employee.ID, updates: Employee.Update)
@@ -35,10 +36,6 @@ public extension BaseRoute {
Path { rootPath }
Method.get
}
Route(.case(Self.delete(id:))) {
Path { rootPath; UUID.parser() }
Method.delete
}
Route(.case(Self.get(id:))) {
Path { rootPath; UUID.parser() }
Method.get