Files
tessera/services/data_service/internal/manager/helper.go

41 lines
908 B
Go

package manager
import (
"log/slog"
"gitlab.michelsen.id/phillmichelsen/tessera/services/data_service/internal/domain"
)
func lg() *slog.Logger { return slog.Default().With("cmp", "manager") }
func identifierSetDifferences(oldIDs, nextIDs []domain.Identifier) (toAdd, toDel []domain.Identifier) {
oldSet := make(map[domain.Identifier]struct{}, len(oldIDs))
for _, id := range oldIDs {
oldSet[id] = struct{}{}
}
newSet := make(map[domain.Identifier]struct{}, len(nextIDs))
for _, id := range nextIDs {
newSet[id] = struct{}{}
if _, ok := oldSet[id]; !ok {
toAdd = append(toAdd, id)
}
}
for _, id := range oldIDs {
if _, ok := newSet[id]; !ok {
toDel = append(toDel, id)
}
}
return
}
func identifierMapToSlice(m map[domain.Identifier]struct{}) []domain.Identifier {
ids := make([]domain.Identifier, 0, len(m))
for id := range m {
ids = append(ids, id)
}
return ids
}