From c15710ddec571f03c618f0c706f863beb4a745ee Mon Sep 17 00:00:00 2001 From: Adrian Zuercher Date: Wed, 30 Jul 2025 17:14:46 +0200 Subject: [PATCH] add remove buses when empty --- models/driver.go | 6 +++++- models/drivers.go | 6 ++++++ models/topic.go | 5 ++++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/models/driver.go b/models/driver.go index c1baa9a..d1fab04 100644 --- a/models/driver.go +++ b/models/driver.go @@ -1,6 +1,8 @@ package models -import "slices" +import ( + "slices" +) // driver model type Driver struct { @@ -46,9 +48,11 @@ func (d *Driver) RemoveBuses(buses []*Bus) { } currentBus.RemoveAddress(bus.Address...) + if bus.Topic != nil { currentBus.RemoveSubscription(bus.Topic.Subscribe...) currentBus.RemovePublish(bus.Topic.Publish...) + if len(currentBus.Address) == 0 { var remove bool = true if currentBus.Topic != nil { diff --git a/models/drivers.go b/models/drivers.go index d017c29..7fe1307 100644 --- a/models/drivers.go +++ b/models/drivers.go @@ -23,6 +23,12 @@ func (d *Drivers) AddDriver(drv *Driver) { func (d *Drivers) RemoveDriver(drv *Driver) { if driver, ok := (*d)[drv.Type]; ok { driver.RemoveBuses(drv.Buses) + if len(driver.Buses) == 1 { + if len(driver.Buses[0].Address) == 0 && driver.Buses[0].Topic == nil { + (*d)[drv.Type] = &Driver{} + return + } + } (*d)[drv.Type] = driver return } diff --git a/models/topic.go b/models/topic.go index 0025186..3b2eb4c 100644 --- a/models/topic.go +++ b/models/topic.go @@ -1,6 +1,8 @@ package models -import "slices" +import ( + "slices" +) // topic model type Topic struct { @@ -33,6 +35,7 @@ func (t *Topic) RemoveSubscription(subs ...string) { t.Subscribe = []string{} return } + for _, toDelete := range subs { for i, a := range t.Subscribe { if a == toDelete {