package cilogs

import (
	"time"

	"tangled.org/core/api/org_tangled"
)

// helper functions against generated code

func workflowElapsed(wf *org_tangled.CiDefs_WorkflowRun, now time.Time) time.Duration {
	if wf.StartedAt == nil {
		return 0
	}
	started, err := time.Parse(time.RFC3339, *wf.StartedAt)
	if err != nil {
		return 0
	}
	if wf.FinishedAt == nil {
		return now.Sub(started)
	}
	finished, err := time.Parse(time.RFC3339, *wf.FinishedAt)
	if err != nil {
		return 0
	}
	return finished.Sub(started)
}

func workflowName(wf *org_tangled.CiDefs_WorkflowRun) string {
	if wf.Name != nil {
		return *wf.Name
	}
	return wf.Id
}

var finishedStatuses = map[string]bool{
	"failed":    true,
	"timeout":   true,
	"cancelled": true,
	"success":   true,
}

func pipelineFinished(p *org_tangled.CiDefs_Pipeline) bool {
	for _, wf := range p.Workflows {
		if !finishedStatuses[wf.Status] {
			return false
		}
	}
	return true
}
