Skip to content
Snippets Groups Projects
Commit 4e15f1b3 authored by Andre Sterba's avatar Andre Sterba Committed by Malte Bauch
Browse files

Fix get by name for devices


See merge request !286

Co-authored-by: default avatarMalte Bauch <malte.bauch@extern.h-da.de>
parent 01b37951
Tags
2 merge requests!286Fix get by name for devices,!264WIP: Develop
Pipeline #99655 passed
...@@ -36,6 +36,37 @@ func NewDatabaseDeviceStore(pndUUID uuid.UUID, sbiStore southbound.SbiStore) dev ...@@ -36,6 +36,37 @@ func NewDatabaseDeviceStore(pndUUID uuid.UUID, sbiStore southbound.SbiStore) dev
// Get takes a Device's UUID or name and returns the Device. // Get takes a Device's UUID or name and returns the Device.
func (s *DatabaseDeviceStore) Get(query store.Query) (device.Device, error) { func (s *DatabaseDeviceStore) Get(query store.Query) (device.Device, error) {
var loadedDevice LoadedDevice var loadedDevice LoadedDevice
var err error
if query.ID.String() != "" {
loadedDevice, err = s.getByID(query.ID)
if err != nil {
return nil, errors.ErrCouldNotFind{StoreName: deviceStoreName}
}
device, err := s.createDeviceFromStore(loadedDevice)
if err != nil {
return nil, err
}
return device, nil
}
loadedDevice, err = s.getByName(query.Name)
if err != nil {
return nil, errors.ErrCouldNotFind{StoreName: deviceStoreName}
}
device, err := s.createDeviceFromStore(loadedDevice)
if err != nil {
return nil, err
}
return device, nil
}
func (s *DatabaseDeviceStore) getByID(idOfDevice uuid.UUID) (LoadedDevice, error) {
var loadedDevice LoadedDevice
client, ctx, cancel := database.GetMongoConnection() client, ctx, cancel := database.GetMongoConnection()
defer cancel() defer cancel()
...@@ -43,33 +74,41 @@ func (s *DatabaseDeviceStore) Get(query store.Query) (device.Device, error) { ...@@ -43,33 +74,41 @@ func (s *DatabaseDeviceStore) Get(query store.Query) (device.Device, error) {
db := client.Database(database.DatabaseName) db := client.Database(database.DatabaseName)
collection := db.Collection(s.storeName) collection := db.Collection(s.storeName)
result := collection.FindOne(ctx, bson.D{primitive.E{Key: "_id", Value: query.ID}}) result := collection.FindOne(ctx, bson.D{primitive.E{Key: "_id", Value: idOfDevice.String()}})
if result == nil { if result == nil {
return nil, errors.ErrCouldNotFind{StoreName: deviceStoreName} return loadedDevice, errors.ErrCouldNotFind{StoreName: deviceStoreName}
} }
err := result.Decode(&loadedDevice) err := result.Decode(&loadedDevice)
if err != nil { if err != nil {
db := client.Database(database.DatabaseName) log.Printf("Failed marshalling %v", err)
collection := db.Collection(s.storeName) return loadedDevice, errors.ErrCouldNotFind{StoreName: deviceStoreName}
result := collection.FindOne(ctx, bson.D{primitive.E{Key: "_id", Value: query.Name}}) }
if result == nil {
return nil, errors.ErrCouldNotFind{StoreName: deviceStoreName}
}
err := result.Decode(&loadedDevice) return loadedDevice, nil
if err != nil { }
log.Printf("Failed marshalling %v", err)
return nil, errors.ErrCouldNotFind{StoreName: deviceStoreName} func (s *DatabaseDeviceStore) getByName(nameOfDevice string) (LoadedDevice, error) {
} var loadedDevice LoadedDevice
client, ctx, cancel := database.GetMongoConnection()
defer cancel()
defer client.Disconnect(ctx)
db := client.Database(database.DatabaseName)
collection := db.Collection(s.storeName)
result := collection.FindOne(ctx, bson.D{primitive.E{Key: "name", Value: nameOfDevice}})
if result == nil {
return loadedDevice, errors.ErrCouldNotFind{StoreName: deviceStoreName}
} }
device, err := s.createDeviceFromStore(loadedDevice) err := result.Decode(&loadedDevice)
if err != nil { if err != nil {
return nil, err log.Printf("Failed marshalling %v", err)
return loadedDevice, errors.ErrCouldNotFind{StoreName: deviceStoreName}
} }
return device, nil return loadedDevice, nil
} }
// GetAll returns all stored devices. // GetAll returns all stored devices.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment