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
// Get takes a Device's UUID or name and returns the Device.
func (s *DatabaseDeviceStore) Get(query store.Query) (device.Device, error) {
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()
defer cancel()
......@@ -43,33 +74,41 @@ func (s *DatabaseDeviceStore) Get(query store.Query) (device.Device, error) {
db := client.Database(database.DatabaseName)
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 {
return nil, errors.ErrCouldNotFind{StoreName: deviceStoreName}
return loadedDevice, errors.ErrCouldNotFind{StoreName: deviceStoreName}
}
err := result.Decode(&loadedDevice)
if err != nil {
db := client.Database(database.DatabaseName)
collection := db.Collection(s.storeName)
result := collection.FindOne(ctx, bson.D{primitive.E{Key: "_id", Value: query.Name}})
if result == nil {
return nil, errors.ErrCouldNotFind{StoreName: deviceStoreName}
}
log.Printf("Failed marshalling %v", err)
return loadedDevice, errors.ErrCouldNotFind{StoreName: deviceStoreName}
}
err := result.Decode(&loadedDevice)
if err != nil {
log.Printf("Failed marshalling %v", err)
return nil, errors.ErrCouldNotFind{StoreName: deviceStoreName}
}
return loadedDevice, nil
}
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 {
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.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment