add: internal pkgs
This commit is contained in:
		| @@ -5,6 +5,8 @@ import ( | ||||
| 	"io" | ||||
| 	"text/tabwriter" | ||||
|  | ||||
| 	"git.cryptic.systems/fh-trier/go-flucky/pkg/internal/temperature" | ||||
|  | ||||
| 	"git.cryptic.systems/fh-trier/go-flucky/pkg/config" | ||||
| 	"git.cryptic.systems/fh-trier/go-flucky/pkg/types" | ||||
| ) | ||||
| @@ -103,29 +105,7 @@ func PrintSensors(cnf *config.FluckyConfig, w io.Writer) error { | ||||
| // PrintTemperatures displays a list of temperatures | ||||
| func PrintTemperatures(temperatures []*types.Temperature, cnf *config.FluckyConfig, w io.Writer) { | ||||
|  | ||||
| 	sensors := []*types.Sensor{} | ||||
|  | ||||
| 	// Search after sensors | ||||
| 	for _, temperature := range temperatures { | ||||
| 		found := false | ||||
|  | ||||
| 		// Search for the sensor that has acquired the measured value | ||||
| 		for _, sensor := range cnf.Sensors { | ||||
| 			if sensor.SensorID == temperature.SensorID { | ||||
| 				sensors = append(sensors, sensor) | ||||
| 				found = true | ||||
| 				break | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		// If it was not found, pass only the sensor with the UUID on | ||||
| 		if !found { | ||||
| 			sensor := &types.Sensor{ | ||||
| 				SensorID: temperature.SensorID, | ||||
| 			} | ||||
| 			sensors = append(sensors, sensor) | ||||
| 		} | ||||
| 	} | ||||
| 	sensors := temperature.GetSensorsByTemperatures(temperatures, cnf) | ||||
|  | ||||
| 	// sort temperature values for every sensor | ||||
| 	orderedTemperatures := make(map[string][]*types.Temperature) | ||||
|   | ||||
							
								
								
									
										99
									
								
								pkg/internal/temperature/temperature.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								pkg/internal/temperature/temperature.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,99 @@ | ||||
| package temperature | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"time" | ||||
|  | ||||
| 	"git.cryptic.systems/fh-trier/go-flucky/pkg/config" | ||||
| 	"git.cryptic.systems/fh-trier/go-flucky/pkg/types" | ||||
| ) | ||||
|  | ||||
| // GetSensorsByTemperatures returns commulated list of sensors by temperature values | ||||
| func GetSensorsByTemperatures(temperatures []*types.Temperature, cnf *config.FluckyConfig) []*types.Sensor { | ||||
| 	sensors := []*types.Sensor{} | ||||
| 	for _, temperature := range temperatures { | ||||
| 		duplicated := false | ||||
| 		foundSensor := &types.Sensor{} | ||||
| 		for _, cnfSensor := range cnf.Sensors { | ||||
| 			if temperature.SensorID == cnfSensor.SensorID { | ||||
| 				foundSensor = cnfSensor | ||||
|  | ||||
| 				// compare if id has already been added to list | ||||
| 				for _, sensor := range sensors { | ||||
| 					if cnfSensor.SensorID == sensor.SensorID { | ||||
| 						duplicated = true | ||||
| 						break | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		if duplicated { | ||||
| 			continue | ||||
| 		} | ||||
| 		if foundSensor != nil { | ||||
| 			sensors = append(sensors, foundSensor) | ||||
| 			continue | ||||
| 		} else { | ||||
| 			sensors = append(sensors, &types.Sensor{SensorID: temperature.SensorID}) | ||||
| 		} | ||||
| 	} | ||||
| 	return sensors | ||||
| } | ||||
|  | ||||
| // GetTemperaturesBetweenTimeRange returns a list of temperatures between a given time range | ||||
| func GetTemperaturesBetweenTimeRange(from time.Time, till *time.Time, temperatures []*types.Temperature) ([]*types.Temperature, error) { | ||||
|  | ||||
| 	if till != nil && from.After(*till) { | ||||
| 		fFormat := from.Format("2006-01-02 15:04:05") | ||||
| 		tFormat := till.Format("2006-01-02 15:04:05") | ||||
| 		return nil, fmt.Errorf("%v is after %v", fFormat, tFormat) | ||||
| 	} | ||||
|  | ||||
| 	cachedTemperatures := []*types.Temperature{} | ||||
| 	for _, temperature := range temperatures { | ||||
|  | ||||
| 		if till == nil && temperature.TemperatureDate.After(from) { | ||||
| 			cachedTemperatures = append(cachedTemperatures, temperature) | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| 		if temperature.TemperatureDate.After(from) && temperature.TemperatureDate.Before(*till) { | ||||
| 			cachedTemperatures = append(cachedTemperatures, temperature) | ||||
| 		} | ||||
| 	} | ||||
| 	return cachedTemperatures, nil | ||||
| } | ||||
|  | ||||
| // GetTemperaturesBySensors returns a list of temperatures given by the sensor id. | ||||
| // If the sensor name, wire-id or id can not found in configured sensors, it would be skiped! | ||||
| func GetTemperaturesBySensors(sensorNamesOrIDs []string, temperatures []*types.Temperature, cnf *config.FluckyConfig) []*types.Temperature { | ||||
| 	cachedSensors := []*types.Sensor{} | ||||
| 	cachedTemperatures := []*types.Temperature{} | ||||
|  | ||||
| 	// match sensor name, wire-id or sensor id with configured sensors | ||||
| 	// and append the matched sensor to the list | ||||
| 	for _, sensor := range sensorNamesOrIDs { | ||||
| 		for _, cs := range cnf.Sensors { | ||||
| 			if cs.SensorID == sensor { | ||||
| 				cachedSensors = append(cachedSensors, cs) | ||||
| 			} | ||||
| 			if cs.WireID != nil && *cs.WireID == sensor { | ||||
| 				cachedSensors = append(cachedSensors, cs) | ||||
| 			} | ||||
| 			if cs.SensorName == sensor { | ||||
| 				cachedSensors = append(cachedSensors, cs) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// march all temperatures which matched with the sensor id | ||||
| 	for _, temperature := range temperatures { | ||||
| 		for _, cachedSensor := range cachedSensors { | ||||
| 			if temperature.SensorID == cachedSensor.SensorID { | ||||
| 				cachedTemperatures = append(cachedTemperatures, temperature) | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	return cachedTemperatures | ||||
| } | ||||
		Reference in New Issue
	
	Block a user