package dataservice import ( "context" "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" "gittea.marcokittel.de/elio/eliotools/tools" "sync" "time" ) var DataServiceDebugHandler = func(filename string) bool { log := logger.NewMarcoLogger() if tools.IsFilenameValid(filename) { t, err := tools.ExtractDateAndConvertToDate(filename) if err != nil { log.Warning(filename + "\n" + err.Error()) return false } log.Info("Datei gefunden.: " + filename + " " + t.String() + "\n") return true } return false } type DataService struct { listener []event.EventListener log logger.Logger ef eliofile.ElioDateiFoo newFolderPath string processedFolderPath string lookupPath string dirCreationRights int } 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(process eliofile.ElioHandleFunc, newFolderPath string, processedFolderPath string, dirCreationRights int) *DataService { ds := DataService{listener: make([]event.EventListener, 0), log: logger.NewMarcoLogger(), ef: *eliofile.NewElioDateiFoo(".", process), newFolderPath: newFolderPath, processedFolderPath: processedFolderPath, dirCreationRights: dirCreationRights} return &ds }