feat: add and remove logger
This commit is contained in:
		@@ -15,13 +15,22 @@ type FileLogger struct {
 | 
			
		||||
	writer   io.Writer
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fl *FileLogger) AddLogFile(logfile string, logValue LogValue) {
 | 
			
		||||
func (fl *FileLogger) AddLogFile(logfile string, logValue LogValue) error {
 | 
			
		||||
	for _, logfiles := range fl.LogFiles {
 | 
			
		||||
		for _, lf := range logfiles {
 | 
			
		||||
			if lf == logfile {
 | 
			
		||||
				return fmt.Errorf("Logfile %v already configured", logfile)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	fl.LogFiles[logValue] = append(fl.LogFiles[logValue], logfile)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fl *FileLogger) GetHumidities(fromDate *time.Time, tillDate *time.Time, sensorNameOrUUID *[]string) ([]*types.Humidity, error) {
 | 
			
		||||
	return nil, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fl *FileLogger) GetTemperatures(from *time.Time, till *time.Time, sensorIDs []string) ([]*types.Temperature, error) {
 | 
			
		||||
	cachedTemperatures := []*types.Temperature{}
 | 
			
		||||
 | 
			
		||||
@@ -47,19 +56,21 @@ func (fl *FileLogger) GetTemperatures(from *time.Time, till *time.Time, sensorID
 | 
			
		||||
			return nil, fmt.Errorf("Can not decode temperatures from logfile %v: %v", logfile, err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// sort all redundant values out
 | 
			
		||||
		for _, loggedTemperature := range loggedTemperatures {
 | 
			
		||||
			found := false
 | 
			
		||||
			for _, cachedTemperature := range cachedTemperatures {
 | 
			
		||||
				if cachedTemperature.TemperatureID == loggedTemperature.TemperatureID {
 | 
			
		||||
					found = true
 | 
			
		||||
					break
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			if !found {
 | 
			
		||||
				cachedTemperatures = append(cachedTemperatures, loggedTemperature)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		cachedTemperatures = append(cachedTemperatures, loggedTemperatures...)
 | 
			
		||||
 | 
			
		||||
		// // sort all redundant values out
 | 
			
		||||
		// for _, loggedTemperature := range loggedTemperatures {
 | 
			
		||||
		// 	found := false
 | 
			
		||||
		// 	for _, cachedTemperature := range cachedTemperatures {
 | 
			
		||||
		// 		if cachedTemperature.TemperatureID == loggedTemperature.TemperatureID {
 | 
			
		||||
		// 			found = true
 | 
			
		||||
		// 			break
 | 
			
		||||
		// 		}
 | 
			
		||||
		// 	}
 | 
			
		||||
		// 	if !found {
 | 
			
		||||
		// 		cachedTemperatures = append(cachedTemperatures, loggedTemperature)
 | 
			
		||||
		// 	}
 | 
			
		||||
		// }
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// // sort out all temperatures which are not mesured by sensor id
 | 
			
		||||
@@ -181,6 +192,29 @@ func (fl *FileLogger) LogTemperatures(temperatures []*types.Temperature) error {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (fl *FileLogger) RemoveLogFile(logfile string) error {
 | 
			
		||||
 | 
			
		||||
	for i, logfiles := range fl.LogFiles {
 | 
			
		||||
		cachedLogfiles := []string{}
 | 
			
		||||
		for _, lf := range logfiles {
 | 
			
		||||
			if lf == logfile {
 | 
			
		||||
				continue
 | 
			
		||||
			}
 | 
			
		||||
			cachedLogfiles = append(cachedLogfiles, lf)
 | 
			
		||||
		}
 | 
			
		||||
		fl.LogFiles[i] = cachedLogfiles
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if _, err := os.Stat(logfile); err == nil {
 | 
			
		||||
		err := os.Remove(logfile)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return fmt.Errorf("Can not remote file %v: %v", logfile, err)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func NewFileLogger(w io.Writer) *FileLogger {
 | 
			
		||||
	return &FileLogger{
 | 
			
		||||
		writer: w,
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
package logger
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"git.cryptic.systems/fh-trier/go-flucky/pkg/types"
 | 
			
		||||
@@ -26,3 +27,47 @@ const (
 | 
			
		||||
	LogHumidity    LogValue = "humidity"
 | 
			
		||||
	LogTemperature          = "temperature"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// LogTypeToString converts a logtype into a string
 | 
			
		||||
func LogTypeToString(loggertype LoggerType) (string, error) {
 | 
			
		||||
	switch loggertype {
 | 
			
		||||
	case LogFile:
 | 
			
		||||
		return "file", nil
 | 
			
		||||
	default:
 | 
			
		||||
		return "", fmt.Errorf("Can not determine loggertype %v", loggertype)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// LogValueToString converts a logvalue into a string
 | 
			
		||||
func LogValueToString(logvalue LogValue) (string, error) {
 | 
			
		||||
	switch logvalue {
 | 
			
		||||
	case LogHumidity:
 | 
			
		||||
		return "humidity", nil
 | 
			
		||||
	case LogTemperature:
 | 
			
		||||
		return "temperature", nil
 | 
			
		||||
	default:
 | 
			
		||||
		return "", fmt.Errorf("Can not determine logvalue %v", logvalue)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// StringToLoggerType converts a string into loggertype
 | 
			
		||||
func StringToLoggerType(loggertype string) (LoggerType, error) {
 | 
			
		||||
	switch loggertype {
 | 
			
		||||
	case "file":
 | 
			
		||||
		return LogFile, nil
 | 
			
		||||
	default:
 | 
			
		||||
		return "", fmt.Errorf("Can not determine loggertype %v", loggertype)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// StringToLogValue converts a string into logvalue
 | 
			
		||||
func StringToLogValue(logvalue string) (LogValue, error) {
 | 
			
		||||
	switch logvalue {
 | 
			
		||||
	case "humidity":
 | 
			
		||||
		return LogHumidity, nil
 | 
			
		||||
	case "temperature":
 | 
			
		||||
		return LogTemperature, nil
 | 
			
		||||
	default:
 | 
			
		||||
		return "", fmt.Errorf("Can not determine logvalue %v", logvalue)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user