27 lines
832 B
Go
27 lines
832 B
Go
package cache
|
|
|
|
import "github.com/DingTalk-Real-AI/dingtalk-workspace-cli/internal/market"
|
|
|
|
// ChangedServerKeysByUpdatedAt returns the set of live server keys that should
|
|
// be refreshed because they are new or their existing registry updatedAt value
|
|
// changed. This intentionally uses only existing market registry metadata.
|
|
func ChangedServerKeysByUpdatedAt(cached, live []market.ServerDescriptor) map[string]bool {
|
|
cachedByKey := make(map[string]market.ServerDescriptor, len(cached))
|
|
for _, server := range cached {
|
|
cachedByKey[server.Key] = server
|
|
}
|
|
|
|
changed := make(map[string]bool)
|
|
for _, server := range live {
|
|
previous, ok := cachedByKey[server.Key]
|
|
if !ok {
|
|
changed[server.Key] = true
|
|
continue
|
|
}
|
|
if !server.UpdatedAt.Equal(previous.UpdatedAt) {
|
|
changed[server.Key] = true
|
|
}
|
|
}
|
|
return changed
|
|
}
|