Skip to content

Commit b7b1de9

Browse files
authored
get with deduplicate (#5838)
1 parent 16f2443 commit b7b1de9

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

pkg/resourceQualifiers/ResourceQualifiersMappingRepository.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ func (repo *QualifiersMappingRepositoryImpl) GetQualifierMappings(resourceType R
8888
if err != nil {
8989
return nil, err
9090
}
91+
qualifierMappings = DeduplicateQualifierMappings(qualifierMappings)
9192
return qualifierMappings, nil
9293
}
9394

@@ -143,6 +144,7 @@ func (repo *QualifiersMappingRepositoryImpl) GetMappingsByResourceTypeAndIdsAndQ
143144
if err == pg.ErrNoRows {
144145
err = nil
145146
}
147+
mappings = DeduplicateQualifierMappings(mappings)
146148
return mappings, err
147149
}
148150

@@ -165,6 +167,7 @@ func (repo *QualifiersMappingRepositoryImpl) GetQualifierMappingsForListOfQualif
165167
if err != nil && err != pg.ErrNoRows {
166168
return nil, err
167169
}
170+
qualifierMappings = DeduplicateQualifierMappings(qualifierMappings)
168171
return qualifierMappings, nil
169172
}
170173

pkg/resourceQualifiers/helper.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,29 @@ func getIdentifierNamesForAppEnv(envName string, appName string) *SelectionIdent
6767
AppName: appName,
6868
}
6969
}
70+
71+
func DeduplicateQualifierMappings(mappings []*QualifierMapping) []*QualifierMapping {
72+
uniqueMappings := make(map[string]*QualifierMapping)
73+
74+
for _, mapping := range mappings {
75+
key := generateKey(mapping)
76+
if existing, found := uniqueMappings[key]; found {
77+
if mapping.UpdatedOn.After(existing.UpdatedOn) {
78+
uniqueMappings[key] = mapping
79+
}
80+
} else {
81+
uniqueMappings[key] = mapping
82+
}
83+
}
84+
85+
result := make([]*QualifierMapping, 0, len(uniqueMappings))
86+
for _, mapping := range uniqueMappings {
87+
result = append(result, mapping)
88+
}
89+
90+
return result
91+
}
92+
93+
func generateKey(mapping *QualifierMapping) string {
94+
return fmt.Sprintf("%d-%d-%d-%d-%d-%s", mapping.ResourceId, mapping.ResourceType, mapping.QualifierId, mapping.IdentifierKey, mapping.IdentifierValueInt, mapping.IdentifierValueString)
95+
}

0 commit comments

Comments
 (0)