MCPcopy
hub / github.com/daptin/daptin / mergeCloudStoreFileSet

Function mergeCloudStoreFileSet

server/resource/resource_update.go:1198–1230  ·  view source on GitHub ↗
(existingFiles []map[string]interface{}, incomingFiles []interface{})

Source from the content-addressed store, hash-verified

1196}
1197
1198func mergeCloudStoreFileSet(existingFiles []map[string]interface{}, incomingFiles []interface{}) []map[string]interface{} {
1199 finalFileSet := make([]map[string]interface{}, 0, len(existingFiles)+len(incomingFiles))
1200 existingFilesMap := make(map[string]int)
1201
1202 for _, file := range existingFiles {
1203 fileName := file["name"].(string)
1204 if _, ok := existingFilesMap[fileName]; ok {
1205 continue
1206 }
1207 existingFilesMap[fileName] = len(finalFileSet)
1208 finalFileSet = append(finalFileSet, copyFileMetadata(file))
1209 }
1210
1211 for i := range incomingFiles {
1212 file := incomingFiles[i].(map[string]interface{})
1213 delete(file, "file")
1214 delete(file, "contents")
1215 incomingFiles[i] = file
1216
1217 fileName := file["name"].(string)
1218 if existingIndex, ok := existingFilesMap[fileName]; ok {
1219 for key, value := range file {
1220 finalFileSet[existingIndex][key] = value
1221 }
1222 continue
1223 }
1224
1225 existingFilesMap[fileName] = len(finalFileSet)
1226 finalFileSet = append(finalFileSet, copyFileMetadata(file))
1227 }
1228
1229 return finalFileSet
1230}
1231
1232func copyFileMetadata(file map[string]interface{}) map[string]interface{} {
1233 copiedFile := make(map[string]interface{}, len(file))

Calls 2

makeFunction · 0.85
copyFileMetadataFunction · 0.85