Skip to content

Commit 80a5983

Browse files
committed
organize the endpoint/operation routing code a bit better
1 parent 07812c4 commit 80a5983

13 files changed

+433
-311
lines changed

Sources/UnidocAutomation/PackageBuildStatus.Edition.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,17 @@ extension PackageBuildStatus
55
@frozen public
66
struct Edition:Equatable, Sendable
77
{
8+
public
9+
let coordinate:Int32
810
public
911
let graphs:Int
1012
public
1113
let tag:String
1214

1315
@inlinable public
14-
init(graphs:Int, tag:String)
16+
init(coordinate:Int32, graphs:Int, tag:String)
1517
{
18+
self.coordinate = coordinate
1619
self.graphs = graphs
1720
self.tag = tag
1821
}
@@ -23,6 +26,7 @@ extension PackageBuildStatus.Edition
2326
@frozen public
2427
enum CodingKey:String
2528
{
29+
case coordinate
2630
case graphs
2731
case tag
2832
}
@@ -32,6 +36,7 @@ extension PackageBuildStatus.Edition:JSONObjectEncodable
3236
public
3337
func encode(to json:inout JSON.ObjectEncoder<CodingKey>)
3438
{
39+
json[.coordinate] = self.coordinate
3540
json[.graphs] = self.graphs
3641
json[.tag] = self.tag
3742
}
@@ -41,7 +46,7 @@ extension PackageBuildStatus.Edition:JSONObjectDecodable
4146
public
4247
init(json:JSON.ObjectDecoder<CodingKey>) throws
4348
{
44-
self.init(
49+
self.init(coordinate: try json[.coordinate].decode(),
4550
graphs: try json[.graphs].decode(),
4651
tag: try json[.tag].decode())
4752
}

Sources/UnidocAutomation/PackageBuildStatus.swift

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import JSON
33
@frozen public
44
struct PackageBuildStatus
55
{
6+
public
7+
let coordinate:Int32
68
public
79
let repo:String
810

@@ -12,8 +14,9 @@ struct PackageBuildStatus
1214
var prerelease:Edition?
1315

1416
@inlinable public
15-
init(repo:String, release:Edition, prerelease:Edition? = nil)
17+
init(coordinate:Int32, repo:String, release:Edition, prerelease:Edition? = nil)
1618
{
19+
self.coordinate = coordinate
1720
self.repo = repo
1821
self.release = release
1922
self.prerelease = prerelease
@@ -24,6 +27,7 @@ extension PackageBuildStatus
2427
@frozen public
2528
enum CodingKey:String
2629
{
30+
case coordinate
2731
case repo
2832
case release
2933
case prerelease
@@ -34,6 +38,7 @@ extension PackageBuildStatus:JSONObjectEncodable
3438
public
3539
func encode(to json:inout JSON.ObjectEncoder<CodingKey>)
3640
{
41+
json[.coordinate] = self.coordinate
3742
json[.repo] = self.repo
3843
json[.release] = self.release
3944
json[.prerelease] = self.prerelease
@@ -44,7 +49,8 @@ extension PackageBuildStatus:JSONObjectDecodable
4449
public
4550
init(json:JSON.ObjectDecoder<CodingKey>) throws
4651
{
47-
self.init(repo: try json[.repo].decode(),
52+
self.init(coordinate: try json[.coordinate].decode(),
53+
repo: try json[.repo].decode(),
4854
release: try json[.release].decode(),
4955
prerelease: try json[.prerelease]?.decode())
5056
}

Sources/UnidocDB/Packages/UnidocDatabase.Graphs.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,19 @@ extension UnidocDatabase.Graphs:DatabaseCollection
5656
]
5757
}
5858

59+
extension UnidocDatabase.Graphs
60+
{
61+
public
62+
func upsert(_ graph:__owned Snapshot,
63+
with session:Mongo.Session) async throws -> SnapshotReceipt.Upsert
64+
{
65+
switch try await self.upsert(some: graph, with: session)
66+
{
67+
case nil: return .insert
68+
case _?: return .update
69+
}
70+
}
71+
}
5972
extension UnidocDatabase.Graphs
6073
{
6174
func list(package:Int32? = nil,

Sources/UnidocDB/Packages/UnidocDatabase.swift

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -200,13 +200,8 @@ extension UnidocDatabase
200200
metadata: docs.metadata,
201201
graph: docs.graph)
202202

203-
let upsert:SnapshotReceipt.Upsert
204-
205-
switch try await self.graphs.upsert(some: snapshot, with: session)
206-
{
207-
case nil: upsert = .update
208-
case _?: upsert = .insert
209-
}
203+
let upsert:SnapshotReceipt.Upsert = try await self.graphs.upsert(snapshot,
204+
with: session)
210205

211206
return .init(id: snapshot.id,
212207
edition: snapshot.edition,

Sources/UnidocPages/API/Site.API.Get.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ extension Site.API
44
enum Get:String
55
{
66
case build
7-
case github
8-
case register
97
}
108
}
119
extension Site.API.Get:StaticAPI

Sources/UnidocPages/Responses/PackageBuildStatus (ext).swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ extension PackageBuildStatus
1616
}
1717

1818
self.init(
19+
coordinate: output.record.cell,
1920
repo: "https://\(repo.origin)",
2021
release: release,
2122
prerelease: output.prereleases.first.flatMap(Edition.init(from:)))

Sources/UnidocPages/Responses/PackageBuildStatus.Edition (ext).swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ extension PackageBuildStatus.Edition
55
{
66
init?(from output:PackageEditionsQuery.Facet)
77
{
8-
self.init(graphs: output.graphs?.count ?? 0, tag: output.edition.name)
8+
self.init(coordinate: output.edition.version,
9+
graphs: output.graphs?.count ?? 0,
10+
tag: output.edition.name)
911
}
1012
}

0 commit comments

Comments
 (0)