Files
tecamino-json_data/models/drivers.go
2025-07-31 08:35:18 +02:00

37 lines
665 B
Go

package models
// collection of drivers ordered in map
type Drivers map[string]*Driver
func (d *Drivers) AddNewDriver(typ string) *Driver {
if drv, ok := (*d)[typ]; ok {
return drv
}
drv := &Driver{Type: typ}
(*d)[typ] = drv
return drv
}
func (d *Drivers) AddDriver(drv *Driver) {
if driver, ok := (*d)[drv.Type]; ok {
driver.AddBuses(drv.Buses)
return
}
(*d)[drv.Type] = drv
}
func (d *Drivers) RemoveDriver(drv *Driver) {
if driver, ok := (*d)[drv.Type]; ok {
driver.RemoveBuses(drv.Buses)
}
d.CleanEmptyDrivers()
}
func (d *Drivers) CleanEmptyDrivers() {
for key, drv := range *d {
if len(drv.Buses) == 0 {
delete(*d, key)
}
}
}