diff --git a/cmd/shell/main.go b/cmd/shell/main.go index 2607ecc..f6c7115 100644 --- a/cmd/shell/main.go +++ b/cmd/shell/main.go @@ -6,10 +6,9 @@ import ( "os/signal" "sync" "syscall" - "time" "gittea.marcokittel.de/elio/eliotools/datawriter/internal/app" - "gittea.marcokittel.de/elio/eliotools/datawriter/internal/dbwriter" + "gittea.marcokittel.de/elio/eliotools/datawriter/internal/dataservice" ) const ( @@ -19,35 +18,20 @@ const ( StockMustHaveFileLen = 38 ) -func db(ctx context.Context, app *app.App, wg *sync.WaitGroup) { - defer wg.Done() - for { - select { - case <-ctx.Done(): - return - default: - //Hier nach neuen Dateien suchen - err := app.AppendData(dbwriter.MyStruct{A: "bla", B: 4}) - if err != nil { - //todo - } - time.Sleep(time.Second * 2) - } - } -} - func main() { - ctx, cancel := signal.NotifyContext( context.Background(), os.Interrupt, syscall.SIGTERM, ) + defer cancel() var wg sync.WaitGroup app := app.NewApp(NewDir, ProcessedDir, Rights, &wg) - wg.Add(1) - go db(ctx, app, &wg) + ds := dataservice.NewDataService() + ds.AddListener(app) + wg.Add(ds.ListenerCount()) app.Run() + ds.Run(ctx, &wg) wg.Wait() } diff --git a/go.mod b/go.mod index eff2152..cd66793 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,6 @@ module gittea.marcokittel.de/elio/eliotools/datawriter go 1.24.4 require ( - gittea.marcokittel.de/elio/eliotools/logger v0.0.0-20250622173330-32b4c009427c // indirect - gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622182838-d7bc6feff972 // indirect + gittea.marcokittel.de/elio/eliotools/logger v0.0.0-20250624203334-69cf94bf1eef + gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622182838-d7bc6feff972 ) diff --git a/go.sum b/go.sum index 3c0891b..0daefe0 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,6 @@ gittea.marcokittel.de/elio/eliotools/logger v0.0.0-20250622173330-32b4c009427c h1:oDEBlixjzptDRNutBddsgcNqls/+dDgfgzWvGGSnQwY= gittea.marcokittel.de/elio/eliotools/logger v0.0.0-20250622173330-32b4c009427c/go.mod h1:WDmnG6o72HhGTSkgwj2kXYcRL2MaNFNsKNBeTh6NIzo= -gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622173330-32b4c009427c h1:qaJdMokE/8FdLV1ASg6wNpZfLijciMfyuz7s4n8kbaw= -gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622173330-32b4c009427c/go.mod h1:jJvuXliNOiG9i8VXrY9vK5Bqv9QwDtswCs3CNIIBvUQ= -gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622182307-42e0ed4d3327 h1:EeBPKq4ttEu5i7cDUyt82B3ANc+sRU/pXcgKYs0Uqy8= -gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622182307-42e0ed4d3327/go.mod h1:jJvuXliNOiG9i8VXrY9vK5Bqv9QwDtswCs3CNIIBvUQ= +gittea.marcokittel.de/elio/eliotools/logger v0.0.0-20250624203334-69cf94bf1eef h1:EzFzLINpiq712X2/t8ZMTLoWuqA6sRmpH3J0VpFi2Cg= +gittea.marcokittel.de/elio/eliotools/logger v0.0.0-20250624203334-69cf94bf1eef/go.mod h1:WDmnG6o72HhGTSkgwj2kXYcRL2MaNFNsKNBeTh6NIzo= gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622182838-d7bc6feff972 h1:ADdr3tbG0Zd5lYirqcMGWd7LSiVkwdOoknVOCfGFkYI= gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622182838-d7bc6feff972/go.mod h1:jJvuXliNOiG9i8VXrY9vK5Bqv9QwDtswCs3CNIIBvUQ= diff --git a/internal/app/app.go b/internal/app/app.go index b02547a..18b0728 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -1,6 +1,7 @@ package app import ( + "context" "io/fs" "os" "runtime" @@ -31,6 +32,11 @@ func NewApp(newFolderPath string, processedFolderPath string, dirCreationRights return &a } +func (a *App) HandleData(ctx context.Context, data dbwriter.MyStruct) error { + a.log.Info("HandleData") + return nil +} + func (a *App) AppendData(data dbwriter.MyStruct) error { a.log.Info("Verarbeite Daten: " + data.A + " " + string(data.B)) //Todo @@ -39,17 +45,12 @@ func (a *App) AppendData(data dbwriter.MyStruct) error { func (a *App) Foo() { - // x := tools.IsFilenameValid(filename) path, _ := os.Getwd() - ml := logger.NewMarcoLogger() - // ml.Info(fmt.Sprint(x)) - newDirExists, err := tools.CheckDir(path + a.newFolderPath) if err != nil { ml.Fatal(err.Error()) } - processedDirExists, err := tools.CheckDir(path + a.processedFolderPath) if err != nil { ml.Fatal(err.Error()) @@ -70,11 +71,6 @@ func (a *App) Foo() { } } -func (a *App) write(data dbwriter.MyStruct) { - a.log.Info("Okay.... wir sind jetzt hier..... Hier können wir die Spiele beginnen lassen") - -} - func (a *App) Run() { if runtime.GOOS == "windows" { a.log.Fatal("Einfach nein!") diff --git a/internal/dataservice/dataservice.go b/internal/dataservice/dataservice.go new file mode 100644 index 0000000..54fd423 --- /dev/null +++ b/internal/dataservice/dataservice.go @@ -0,0 +1,49 @@ +package dataservice + +import ( + "context" + "sync" + "time" + + "gittea.marcokittel.de/elio/eliotools/datawriter/internal/dbwriter" + "gittea.marcokittel.de/elio/eliotools/datawriter/internal/event" + "gittea.marcokittel.de/elio/eliotools/logger" +) + +type DataService struct { + listener []event.EventListener + log logger.Logger +} + +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 { + err := l.HandleData(ctx, dbwriter.MyStruct{A: "dkl", B: 3}) + if err != nil { + //todo + } + } + d.log.Info("DataService Run") + time.Sleep(time.Second * 2) + } + } +} + +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()} + return &ds +} diff --git a/internal/event/event.go b/internal/event/event.go new file mode 100644 index 0000000..62d55b9 --- /dev/null +++ b/internal/event/event.go @@ -0,0 +1,11 @@ +package event + +import ( + "context" + + "gittea.marcokittel.de/elio/eliotools/datawriter/internal/dbwriter" +) + +type EventListener interface { + HandleData(ctx context.Context, data dbwriter.MyStruct) error +}