diff --git a/internal/csv/helper.go b/internal/csv/helper.go index 2036b47..8c28a83 100644 --- a/internal/csv/helper.go +++ b/internal/csv/helper.go @@ -1,6 +1,7 @@ package csv import ( + "context" "encoding/csv" "os" @@ -9,7 +10,6 @@ import ( ) type Helper struct { - fx.In csvFile *os.File csvWriter *csv.Writer logger *zap.Logger @@ -23,11 +23,19 @@ func NewHelper(lc fx.Lifecycle, logger *zap.Logger) *Helper { csvWriter := csv.NewWriter(csvFile) - return &Helper{ + helper := &Helper{ csvFile: csvFile, csvWriter: csvWriter, logger: logger, } + + lc.Append(fx.Hook{ + OnStop: func(context.Context) error { + return helper.Close() + }, + }) + + return helper } func (h *Helper) AddEntry(date string, topic string, message string) error { diff --git a/internal/mqtt/mqtt.go b/internal/mqtt/mqtt.go index eb3994e..2a15055 100644 --- a/internal/mqtt/mqtt.go +++ b/internal/mqtt/mqtt.go @@ -35,6 +35,11 @@ func NewClient(logger *zap.Logger, config *config.Config, csvHelper *csv.Helper) } }) + if config.Username != "" && config.Password != "" { + opts.SetUsername(config.Username) + opts.SetPassword(config.Password) + } + c := mqtt.NewClient(opts) if token := c.Connect(); token.Wait() && token.Error() != nil { logger.Fatal("error connecting to MQTT broker", zap.Error(token.Error()))