feat: Adds api route tests.

This commit is contained in:
2025-12-29 10:36:31 -05:00
parent 6bc6a7d7fa
commit dce358d85e
7 changed files with 202 additions and 10 deletions

View File

@@ -6,12 +6,60 @@ extension SiteRoute {
/// Represents api routes.
///
/// The routes return json as opposed to view routes that return html.
public enum Api {
public enum Api: Sendable, Equatable {
case project(Self.ProjectRoute)
public static let rootPath = Path {
"api"
"v1"
}
public static let router = OneOf {
Route(.case(Self.project)) {
rootPath
ProjectRoute.router
}
}
}
}
extension SiteRoute.Api {
public enum ProjectRoute: Sendable, Equatable {
case create(Project.Create)
case delete(id: Project.ID)
case get(id: Project.ID)
case index
static let rootPath = "projects"
public static let router = OneOf {
Route(.case(Self.create)) {
Path { rootPath }
Method.post
Body(.json(Project.Create.self))
}
Route(.case(Self.delete(id:))) {
Path {
rootPath
Project.ID.parser()
}
Method.delete
}
Route(.case(Self.get(id:))) {
Path {
rootPath
Project.ID.parser()
}
Method.get
}
Route(.case(Self.index)) {
Path { rootPath }
Method.get
}
}
}
}

View File

@@ -2,5 +2,13 @@ import CasePathsCore
import Foundation
@preconcurrency import URLRouting
public enum SiteRoute {
public enum SiteRoute: Equatable, Sendable {
case api(Self.Api)
public static let router = OneOf {
Route(.case(Self.api)) {
SiteRoute.Api.router
}
}
}

View File

@@ -0,0 +1,12 @@
import CasePathsCore
import Foundation
@preconcurrency import URLRouting
extension SiteRoute {
/// Represents view routes.
///
/// The routes return html.
public enum View {
}
}