MCPcopy Create free account
hub / github.com/bytebase/bytebase / compareTriggers

Function compareTriggers

backend/plugin/schema/differ.go:1370–1419  ·  view source on GitHub ↗

compareTriggers compares two lists of triggers.

(oldTriggers, newTriggers []*storepb.TriggerMetadata)

Source from the content-addressed store, hash-verified

1368
1369// compareTriggers compares two lists of triggers.
1370func 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.
1422func triggersEqual(t1, t2 *storepb.TriggerMetadata) bool {

Callers 1

compareTableDetailsFunction · 0.85

Calls 1

triggersEqualFunction · 0.85

Tested by

no test coverage detected