56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
package dataservice
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"sync"
|
|
"time"
|
|
|
|
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/dbwriter"
|
|
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/event"
|
|
"gittea.marcokittel.de/elio/eliotools/eliofile"
|
|
"gittea.marcokittel.de/elio/eliotools/logger"
|
|
)
|
|
|
|
type DataService struct {
|
|
listener []event.EventListener
|
|
log logger.Logger
|
|
ef eliofile.ElioDateiFoo
|
|
}
|
|
|
|
func (d *DataService) ListenerCount() int {
|
|
return len(d.listener)
|
|
}
|
|
|
|
func (d *DataService) Run(ctx context.Context, wg *sync.WaitGroup) {
|
|
defer wg.Done()
|
|
for {
|
|
select {
|
|
case <-ctx.Done():
|
|
return
|
|
default:
|
|
//Hier nach neuen Dateien suchen
|
|
for _, l := range d.listener {
|
|
d.ef.ScanCsv()
|
|
err := l.HandleData(ctx, dbwriter.MyStruct{A: "dkl", B: 3})
|
|
if err != nil {
|
|
//todo
|
|
}
|
|
}
|
|
d.log.Info("DataService Run")
|
|
time.Sleep(time.Second * 3)
|
|
}
|
|
}
|
|
}
|
|
|
|
func (d *DataService) AddListener(ev event.EventListener) {
|
|
d.listener = append(d.listener, ev)
|
|
}
|
|
|
|
func NewDataService() *DataService {
|
|
ds := DataService{listener: make([]event.EventListener, 0), log: logger.NewMarcoLogger(), ef: *eliofile.NewElioDateiFoo(".", func(filename string) {
|
|
fmt.Printf("Achtung hier wird das CSV Vearbeitet: %s\n\n", filename)
|
|
})}
|
|
return &ds
|
|
}
|