package commitintel

import (
	"fmt"

	"bit.admedia.com/scm/ad/adpilot-indexing-commit-intel.com/internal/contracts/events"
	"bit.admedia.com/scm/ad/adpilot-indexing-commit-intel.com/internal/contracts/graph"
	"bit.admedia.com/scm/ad/adpilot-indexing-commit-intel.com/internal/store"
)

// CommitAnalysisReadyFromResult builds a commit.analysis.ready event from analysis output.
func CommitAnalysisReadyFromResult(
	deltaEvent events.GraphDeltaReadyEvent,
	result store.AnalysisResult,
) events.CommitAnalysisReadyEvent {
	event := events.NewCommitAnalysisReadyEvent(
		fmt.Sprintf("evt_commit_analysis_%s", result.AnalysisID),
		result.RepoID,
		result.CommitSHA,
		result.AnalysisID,
	)
	event.ImpactedSymbols = append([]string(nil), result.ImpactedSymbols...)
	event.ChangedFiles = append([]string(nil), result.ChangedFiles...)
	event.Summary = result.Summary
	event.GraphSchemaVersion = deltaEvent.GraphSchemaVersion
	if event.GraphSchemaVersion == "" {
		event.GraphSchemaVersion = graph.SchemaVersionV1
	}
	return event
}
