57 lines
1.9 KiB
Go
57 lines
1.9 KiB
Go
package service
|
|
|
|
import "cmr-backend/internal/store/postgres"
|
|
|
|
const (
|
|
LaunchSourceEventCurrentRelease = "event_current_release"
|
|
LaunchModeManifestRelease = "manifest_release"
|
|
)
|
|
|
|
type ResolvedReleaseView struct {
|
|
LaunchMode string `json:"launchMode"`
|
|
Source string `json:"source"`
|
|
EventID string `json:"eventId"`
|
|
ReleaseID string `json:"releaseId"`
|
|
ConfigLabel string `json:"configLabel"`
|
|
ManifestURL string `json:"manifestUrl"`
|
|
ManifestChecksumSha256 *string `json:"manifestChecksumSha256,omitempty"`
|
|
RouteCode *string `json:"routeCode,omitempty"`
|
|
}
|
|
|
|
func buildResolvedReleaseFromEvent(event *postgres.Event, source string) *ResolvedReleaseView {
|
|
if event == nil || event.CurrentReleasePubID == nil || event.ConfigLabel == nil || event.ManifestURL == nil {
|
|
return nil
|
|
}
|
|
|
|
return &ResolvedReleaseView{
|
|
LaunchMode: LaunchModeManifestRelease,
|
|
Source: source,
|
|
EventID: event.PublicID,
|
|
ReleaseID: *event.CurrentReleasePubID,
|
|
ConfigLabel: *event.ConfigLabel,
|
|
ManifestURL: *event.ManifestURL,
|
|
ManifestChecksumSha256: event.ManifestChecksum,
|
|
RouteCode: event.RouteCode,
|
|
}
|
|
}
|
|
|
|
func buildResolvedReleaseFromSession(session *postgres.Session, source string) *ResolvedReleaseView {
|
|
if session == nil || session.ReleasePublicID == nil || session.ConfigLabel == nil || session.ManifestURL == nil {
|
|
return nil
|
|
}
|
|
|
|
view := &ResolvedReleaseView{
|
|
LaunchMode: LaunchModeManifestRelease,
|
|
Source: source,
|
|
ReleaseID: *session.ReleasePublicID,
|
|
ConfigLabel: *session.ConfigLabel,
|
|
ManifestURL: *session.ManifestURL,
|
|
ManifestChecksumSha256: session.ManifestChecksum,
|
|
RouteCode: session.RouteCode,
|
|
}
|
|
if session.EventPublicID != nil {
|
|
view.EventID = *session.EventPublicID
|
|
}
|
|
return view
|
|
}
|