compareTriggers compares two lists of triggers.
(oldTriggers, newTriggers []*storepb.TriggerMetadata)
| 1368 | |
| 1369 | // compareTriggers compares two lists of triggers. |
| 1370 | func compareTriggers(oldTriggers, newTriggers []*storepb.TriggerMetadata) []*TriggerDiff { |
| 1371 | var changes []*TriggerDiff |
| 1372 | |
| 1373 | oldTriggerMap := make(map[string]*storepb.TriggerMetadata) |
| 1374 | for _, trigger := range oldTriggers { |
| 1375 | oldTriggerMap[trigger.Name] = trigger |
| 1376 | } |
| 1377 | |
| 1378 | newTriggerMap := make(map[string]*storepb.TriggerMetadata) |
| 1379 | for _, trigger := range newTriggers { |
| 1380 | newTriggerMap[trigger.Name] = trigger |
| 1381 | } |
| 1382 | |
| 1383 | // Check for dropped triggers |
| 1384 | for triggerName, oldTrigger := range oldTriggerMap { |
| 1385 | if _, exists := newTriggerMap[triggerName]; !exists { |
| 1386 | changes = append(changes, &TriggerDiff{ |
| 1387 | Action: MetadataDiffActionDrop, |
| 1388 | TriggerName: triggerName, |
| 1389 | OldTrigger: oldTrigger, |
| 1390 | }) |
| 1391 | } |
| 1392 | } |
| 1393 | |
| 1394 | // Check for new and modified triggers |
| 1395 | for triggerName, newTrigger := range newTriggerMap { |
| 1396 | oldTrigger, exists := oldTriggerMap[triggerName] |
| 1397 | if !exists { |
| 1398 | changes = append(changes, &TriggerDiff{ |
| 1399 | Action: MetadataDiffActionCreate, |
| 1400 | TriggerName: triggerName, |
| 1401 | NewTrigger: newTrigger, |
| 1402 | }) |
| 1403 | } else if !triggersEqual(oldTrigger, newTrigger) { |
| 1404 | // Drop and recreate the trigger instead of altering |
| 1405 | changes = append(changes, &TriggerDiff{ |
| 1406 | Action: MetadataDiffActionDrop, |
| 1407 | TriggerName: triggerName, |
| 1408 | OldTrigger: oldTrigger, |
| 1409 | }) |
| 1410 | changes = append(changes, &TriggerDiff{ |
| 1411 | Action: MetadataDiffActionCreate, |
| 1412 | TriggerName: triggerName, |
| 1413 | NewTrigger: newTrigger, |
| 1414 | }) |
| 1415 | } |
| 1416 | } |
| 1417 | |
| 1418 | return changes |
| 1419 | } |
| 1420 | |
| 1421 | // triggersEqual checks if two triggers are equal. |
| 1422 | func triggersEqual(t1, t2 *storepb.TriggerMetadata) bool { |
no test coverage detected