package logger import ( "fmt" "th7/ports" "time" ) type Logger struct { core ports.CorePort db ports.DBPort period int run bool } func doLogging(log *Logger) { duration := time.Duration(log.period) * time.Second for log.run { time.Sleep(duration) ch, err := log.core.GetChannels() if err != nil { fmt.Printf("error getting data for logger: %v\n", err) } log.db.Save(ch) } } func NewLogger(core ports.CorePort, db ports.DBPort, period int) *Logger { var logger Logger logger.db = db logger.core = core logger.period = period logger.run = true go doLogging(&logger) return &logger } func (l *Logger) Stop() { l.run = false }