This repository has been archived on 2026-02-12. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
swift-duct-calc/Sources/ManualDCore/Routes/ViewRoute.swift

57 lines
1.2 KiB
Swift

import CasePathsCore
import Foundation
@preconcurrency import URLRouting
extension SiteRoute {
/// Represents view routes.
///
/// The routes return html.
public enum View: Equatable, Sendable {
case project(ProjectRoute)
static let router = OneOf {
Route(.case(Self.project)) {
SiteRoute.View.ProjectRoute.router
}
}
}
}
extension SiteRoute.View {
public enum ProjectRoute: Equatable, Sendable {
case create(Project.Create)
case form
case index
static let rootPath = "projects"
public static let router = OneOf {
Route(.case(Self.create)) {
Path { rootPath }
Method.post
Body {
FormData {
Field("name", .string)
Field("streetAddress", .string)
Field("city", .string)
Field("state", .string)
Field("zipCode", .string)
}
.map(.memberwise(Project.Create.init))
}
}
Route(.case(Self.form)) {
Path {
rootPath
"create"
}
Method.get
}
Route(.case(Self.index)) {
Path { rootPath }
Method.get
}
}
}
}