43 lines
2.4 KiB
Go
43 lines
2.4 KiB
Go
package delivery
|
|
|
|
import "time"
|
|
|
|
// BuildRecord is the layout mesh-controller internal/chain/records.go Build writes (line 91), the fields a reader outside
|
|
// the controller reads (novox/hq ADR 0437 §4 §5, issue 1223). The controller's record carries more; a decode ignores
|
|
// what is not here. Path is the module's directory in its repository, as the controller writes it (Build.Path, records.go:100,
|
|
// set from the build request trimmed of slashes at internal/inventory/chain_requests.go:19); empty for a module whose
|
|
// manifest is the repository's root. SourceInputs has no json keys of its own: it is written under its Go field names, as the controller
|
|
// writes it.
|
|
type BuildRecord struct {
|
|
ID string `json:"id"`
|
|
State string `json:"state,omitempty"`
|
|
Failed string `json:"failed,omitempty"`
|
|
Repository string `json:"repository"`
|
|
Ref string `json:"ref,omitempty"`
|
|
Module string `json:"module,omitempty"`
|
|
Path string `json:"path,omitempty"`
|
|
Commit string `json:"commit,omitempty"`
|
|
At time.Time `json:"at,omitzero"`
|
|
SourceFingerprint string `json:"source-fingerprint,omitempty"`
|
|
SourceInputs *SourceInputs `json:"source-inputs,omitempty"`
|
|
}
|
|
|
|
// BuildsBucket is the bucket the builds are kept in: mesh-controller internal/broker/controller_buckets.go:101,
|
|
// BucketName(ControllerSeat, ChainBuilds), with ControllerSeat "mesh-controller" (internal/broker/streams.go:359) and
|
|
// ChainBuilds "builds" (controller_buckets.go:113).
|
|
const BuildsBucket = "mesh-controller_builds"
|
|
|
|
// BuildKey is a build's record under its module, a build that knew none under the request's key: copied from
|
|
// mesh-controller internal/chain/keys.go:35-40 (BuildKey, with RequestKey at line 42).
|
|
func BuildKey(module, id string) string {
|
|
if module == "" {
|
|
return "req." + id
|
|
}
|
|
return module + ".build." + id
|
|
}
|
|
|
|
// NewestKey is the key of a module's newest build, of any state: copied from mesh-controller internal/chain/keys.go:44.
|
|
// The key holds no record: its value is the newest build's id as raw bytes (internal/inventory/chain_builds.go:210 and
|
|
// :546), and the record lives at BuildKey(module, id). The pointer is a hint, checked against that record.
|
|
func NewestKey(module string) string { return module + ".newest" }
|