Skip to content

Commit bd248a6

Browse files
committed
add priority to PendingBuild sort key
1 parent 78d0510 commit bd248a6

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

Sources/UnidocDB/Building/Unidoc.DB.PendingBuilds.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,9 @@ extension Unidoc.DB
2626
extension Unidoc.DB.PendingBuilds
2727
{
2828
public static
29-
let indexEnqueued:Mongo.CollectionIndex = .init("Enqueued", unique: false)
29+
let indexEnqueued:Mongo.CollectionIndex = .init("Enqueued/2", unique: false)
3030
{
31+
$0[Unidoc.PendingBuild[.priority]] = (+)
3132
$0[Unidoc.PendingBuild[.enqueued]] = (+)
3233
}
3334
where:
@@ -84,6 +85,7 @@ extension Unidoc.DB.PendingBuilds
8485
}
8586
$0[.sort]
8687
{
88+
$0[Unidoc.PendingBuild[.priority]] = (+)
8789
$0[Unidoc.PendingBuild[.enqueued]] = (+)
8890
}
8991
$0[.hint] = Self.indexEnqueued.id
@@ -137,7 +139,8 @@ extension Unidoc.DB.PendingBuilds
137139
/// Adds a build to the queue, if it is not already queued, or returns the existing build.
138140
public
139141
func submitBuild(id:Unidoc.Edition,
140-
name:Symbol.PackageAtRef) async throws -> Unidoc.PendingBuild
142+
name:Symbol.PackageAtRef,
143+
priority:Int32 = 0) async throws -> Unidoc.PendingBuild
141144
{
142145
let (pendingBuild, _):(Unidoc.PendingBuild, Bool) = try await self.modify(
143146
upserting: id,
@@ -147,6 +150,7 @@ extension Unidoc.DB.PendingBuilds
147150

148151
$0[.setOnInsert] = Unidoc.PendingBuild.init(id: id,
149152
run: now,
153+
priority: priority,
150154
enqueued: now,
151155
launched: nil,
152156
assignee: nil,

Sources/UnidocDB/Building/Unidoc.PendingBuild.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ extension Unidoc
1616
public
1717
let run:UnixMillisecond
1818

19+
/// Build priority. Lower values are higher priority.
20+
public
21+
let priority:Int32
1922
public
2023
let enqueued:UnixMillisecond?
2124
public
@@ -34,6 +37,7 @@ extension Unidoc
3437
@inlinable public
3538
init(id:Edition,
3639
run:UnixMillisecond,
40+
priority:Int32,
3741
enqueued:UnixMillisecond?,
3842
launched:UnixMillisecond?,
3943
assignee:Account?,
@@ -42,6 +46,7 @@ extension Unidoc
4246
{
4347
self.id = id
4448
self.run = run
49+
self.priority = priority
4550
self.enqueued = enqueued
4651
self.launched = launched
4752
self.assignee = assignee
@@ -57,6 +62,7 @@ extension Unidoc.PendingBuild:Mongo.MasterCodingModel
5762
{
5863
case id = "_id"
5964
case run = "T"
65+
case priority = "P"
6066
case enqueued = "Q"
6167
case launched = "L"
6268
case assignee = "A"
@@ -73,6 +79,7 @@ extension Unidoc.PendingBuild:BSONDocumentEncodable
7379
{
7480
bson[.id] = self.id
7581
bson[.run] = self.run
82+
bson[.priority] = self.priority
7683
bson[.enqueued] = self.enqueued
7784
bson[.launched] = self.launched
7885
bson[.assignee] = self.assignee
@@ -89,6 +96,7 @@ extension Unidoc.PendingBuild:BSONDocumentDecodable
8996
{
9097
self.init(id: try bson[.id].decode(),
9198
run: try bson[.run].decode(),
99+
priority: try bson[.priority].decode(),
92100
enqueued: try bson[.enqueued]?.decode(),
93101
launched: try bson[.launched]?.decode(),
94102
assignee: try bson[.assignee]?.decode(),

0 commit comments

Comments
 (0)