From b9c6aa9d02944b409a768189234510b8d38eca17 Mon Sep 17 00:00:00 2001 From: Adrian Zuercher Date: Tue, 29 Jul 2025 14:20:54 +0200 Subject: [PATCH] change map to slice --- models/bus.go | 2 +- models/driver.go | 43 +++++++++++++++++++++++-------------------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/models/bus.go b/models/bus.go index bce03f5..b162776 100644 --- a/models/bus.go +++ b/models/bus.go @@ -4,7 +4,7 @@ import "slices" // bus model type Bus struct { - Name string `json:"name,omitempty"` + Name string `json:"name"` Address []uint `json:"address,omitempty"` // address of bus Topic *Topic `json:"topic,omitempty"` // address of bus } diff --git a/models/driver.go b/models/driver.go index bd42a88..3fb7168 100644 --- a/models/driver.go +++ b/models/driver.go @@ -2,42 +2,45 @@ package models // driver model type Driver struct { - Type string `json:"type"` // driver type name of driver in collection - Buses map[string]*Bus `json:"buses"` // name of driver bus + Type string `json:"type"` // driver type name of driver in collection + Buses []*Bus `json:"buses,omitempty"` // name of driver bus } func (d *Driver) AddNewBus(name string) *Bus { - if d.Buses == nil { - d.Buses = make(map[string]*Bus) + for _, b := range d.Buses { + if b.Name == name { + return b + } } - if b, ok := d.Buses[name]; ok { - return b - } - d.Buses[name] = &Bus{Name: name} - return d.Buses[name] + b := &Bus{Name: name} + d.Buses = append(d.Buses, b) + return b } -func (d *Driver) AddBuses(buses map[string]*Bus) { - if d.Buses == nil { - d.Buses = make(map[string]*Bus) - } - for key, newBus := range buses { - if currentBus, ok := d.Buses[key]; ok { +func (d *Driver) AddBuses(buses []*Bus) { +next: + for _, newBus := range buses { + for _, currentBus := range d.Buses { + if currentBus.Name != newBus.Name { + continue + } currentBus.AddAddress(newBus.Address...) if newBus.Topic == nil { - continue + continue next } currentBus.AddSubscription(newBus.Topic.Subscribe...) currentBus.AddPublish(newBus.Topic.Publish...) - continue + continue next } - d.Buses[key] = newBus + d.Buses = append(d.Buses, newBus) } } func (d *Driver) GetBus(name string) *Bus { - if b, ok := d.Buses[name]; ok { - return b + for _, b := range d.Buses { + if b.Name == name { + return b + } } return nil }