| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package service
- import (
- "net/http"
- "cmr-backend/internal/apperr"
- "cmr-backend/internal/store/postgres"
- )
- const (
- launchReadyReasonOK = "event is active and launchable"
- launchReadyReasonNotActive = "event is not active"
- launchReadyReasonReleaseMissing = "event does not have a published release"
- launchReadyReasonRuntimeMissing = "current published release is missing runtime binding"
- launchReadyReasonPresentationMissing = "current published release is missing presentation binding"
- launchReadyReasonContentMissing = "current published release is missing content bundle binding"
- )
- func evaluateEventLaunchReadiness(event *postgres.Event) (bool, string) {
- if event == nil {
- return false, launchReadyReasonReleaseMissing
- }
- if event.Status != "active" {
- return false, launchReadyReasonNotActive
- }
- if event.CurrentReleaseID == nil || event.CurrentReleasePubID == nil || event.ConfigLabel == nil || event.ManifestURL == nil {
- return false, launchReadyReasonReleaseMissing
- }
- if buildRuntimeSummaryFromEvent(event) == nil {
- return false, launchReadyReasonRuntimeMissing
- }
- if buildPresentationSummaryFromEvent(event) == nil {
- return false, launchReadyReasonPresentationMissing
- }
- if buildContentBundleSummaryFromEvent(event) == nil {
- return false, launchReadyReasonContentMissing
- }
- return true, launchReadyReasonOK
- }
- func launchReadinessError(reason string) error {
- switch reason {
- case launchReadyReasonNotActive:
- return apperr.New(http.StatusConflict, "event_not_launchable", reason)
- case launchReadyReasonReleaseMissing:
- return apperr.New(http.StatusConflict, "event_release_missing", reason)
- case launchReadyReasonRuntimeMissing:
- return apperr.New(http.StatusConflict, "event_release_runtime_missing", reason)
- case launchReadyReasonPresentationMissing:
- return apperr.New(http.StatusConflict, "event_release_presentation_missing", reason)
- case launchReadyReasonContentMissing:
- return apperr.New(http.StatusConflict, "event_release_content_bundle_missing", reason)
- default:
- return apperr.New(http.StatusConflict, "event_not_launchable", reason)
- }
- }
|