1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
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
}
|