| package interactors |
| |
| import ( |
| cst "repodiff/constants" |
| ent "repodiff/entities" |
| ) |
| |
| // AppProcessingParameters defines all possible inputs that are necessary |
| // prior to applying any application business logic. Any outputs should |
| // be derived from purely deterministic means; As such, the interactors |
| // package should be 100% testable and free of any error return types |
| type AppProcessingParameters struct { |
| DiffRows []ent.DiffRow |
| CommitRows []ent.CommitRow |
| Manifests *ent.ManifestFileGroup |
| } |
| |
| func ApplyApplicationMutations(p AppProcessingParameters) ([]ent.AnalyzedDiffRow, []ent.AnalyzedCommitRow) { |
| projectNameToType := ProjectNamesToType(p.Manifests) |
| return diffRowsToAnalyzed(p.DiffRows, projectNameToType), |
| commitRowsToAnalyzed(p.CommitRows, projectNameToType) |
| } |
| |
| func commitRowsToAnalyzed(commitRows []ent.CommitRow, projectNameToType TypeMap) []ent.AnalyzedCommitRow { |
| analyzed := make([]ent.AnalyzedCommitRow, len(commitRows)) |
| for i, row := range commitRows { |
| analyzed[i] = ent.AnalyzedCommitRow{ |
| CommitRow: row, |
| Type: projectNameToType.getWithDefault( |
| row.DownstreamProject, |
| cst.Empty, |
| ), |
| } |
| } |
| return analyzed |
| } |
| |
| func diffRowsToAnalyzed(diffRows []ent.DiffRow, projectNameToType TypeMap) []ent.AnalyzedDiffRow { |
| analyzed := make([]ent.AnalyzedDiffRow, len(diffRows)) |
| for i, row := range diffRows { |
| analyzed[i] = ent.AnalyzedDiffRow{ |
| DiffRow: row, |
| Type: projectNameToType.getWithDefault( |
| row.DownstreamProject, |
| cst.Empty, |
| ), |
| } |
| } |
| return analyzed |
| } |