Skip to content
Snippets Groups Projects

WIP: Develop

Merged Ghost User requested to merge develop into master
Compare and Show latest version
1 file
+ 55
16
Compare changes
  • Side-by-side
  • Inline
@@ -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.
Loading