From 2feb107c5af6d554991a33525d6e6ea99ae98932 Mon Sep 17 00:00:00 2001 From: Marco Kittel Date: Fri, 27 Jun 2025 00:01:36 +0200 Subject: [PATCH] Implemented correct CSV File Picking for import --- cmd/shell/main.go | 4 +-- go.mod | 4 +-- go.sum | 24 ++++++++++++++ internal/app/app.go | 49 +++-------------------------- internal/dataservice/dataservice.go | 42 ++++++++++++++++++------- 5 files changed, 64 insertions(+), 59 deletions(-) diff --git a/cmd/shell/main.go b/cmd/shell/main.go index f6c7115..341ce36 100644 --- a/cmd/shell/main.go +++ b/cmd/shell/main.go @@ -27,8 +27,8 @@ func main() { defer cancel() var wg sync.WaitGroup - app := app.NewApp(NewDir, ProcessedDir, Rights, &wg) - ds := dataservice.NewDataService() + app := app.NewApp(&wg) + ds := dataservice.NewDataService(dataservice.DataServiceDebugHandler, NewDir, ProcessedDir, Rights) ds.AddListener(app) wg.Add(ds.ListenerCount()) app.Run() diff --git a/go.mod b/go.mod index 5450e8d..1ac3093 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.24.4 require ( gittea.marcokittel.de/elio/eliotools/logger v0.0.0-20250624203334-69cf94bf1eef - gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622182838-d7bc6feff972 + gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250626212824-2199e71c62fd ) -require gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626045721-6475655ba7b0 +require gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626215804-b8e72f5652e6 diff --git a/go.sum b/go.sum index 0273cd8..defc7e0 100644 --- a/go.sum +++ b/go.sum @@ -4,7 +4,31 @@ gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626043708-9b699695e66f gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626043708-9b699695e66f/go.mod h1:RQlmQsRhpitThSuGT7vl5XwTh1duVGHCmJ0caI+xIoE= gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626045721-6475655ba7b0 h1:888K6jaDIbZpFPGv0weZMQXywtsDmUx/pD4mZWyFDEA= gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626045721-6475655ba7b0/go.mod h1:RQlmQsRhpitThSuGT7vl5XwTh1duVGHCmJ0caI+xIoE= +gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626170705-977f71385fe9 h1:bN2IAGDikScwDezPUhb26e6zFfawisneRNQ3xdX/Whg= +gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626170705-977f71385fe9/go.mod h1:RQlmQsRhpitThSuGT7vl5XwTh1duVGHCmJ0caI+xIoE= +gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626201301-c90924a4efa5 h1:qa3FfyPfJTb0xbra8mU0L46rytPkcZ1J3bU2MjzENBo= +gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626201301-c90924a4efa5/go.mod h1:RQlmQsRhpitThSuGT7vl5XwTh1duVGHCmJ0caI+xIoE= +gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626212313-a152ec93d546 h1:F3GPqyyYt655xdHyyHmKMBPsxvNRypQyKmPx7CPyQuI= +gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626212313-a152ec93d546/go.mod h1:h9FfBWQD/1+fF3sFaYN89K3xH54t3LHKBKQj8YiAjnU= +gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626212824-2199e71c62fd h1:ecT7wOC+USHtK+EmY1e0vXkrvsNbN0xuuOuORN0wGgQ= +gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626212824-2199e71c62fd/go.mod h1:h9FfBWQD/1+fF3sFaYN89K3xH54t3LHKBKQj8YiAjnU= +gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626215445-f3705c40c380 h1:W3gKHcVpFtrCzVxcX/Vczd/uVedWIyC7+yulLwOoJ90= +gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626215445-f3705c40c380/go.mod h1:h9FfBWQD/1+fF3sFaYN89K3xH54t3LHKBKQj8YiAjnU= +gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626215804-b8e72f5652e6 h1:dru/Bcg52eUmNm2qnWnKPmpYB4VjnFPBdhWXARZOqPo= +gittea.marcokittel.de/elio/eliotools/eliofile v0.0.0-20250626215804-b8e72f5652e6/go.mod h1:h9FfBWQD/1+fF3sFaYN89K3xH54t3LHKBKQj8YiAjnU= 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= +gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250626170705-977f71385fe9 h1:D2bGrhYH8qsiBJpEjbsNQuJor4rxhiNkaDVhYXG+OVQ= +gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250626170705-977f71385fe9/go.mod h1:jJvuXliNOiG9i8VXrY9vK5Bqv9QwDtswCs3CNIIBvUQ= +gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250626171442-a998aabb24a7 h1:l4vjU4fBrWuZ4QK3Py2f4lQQKg07BMXvLRinpqJoT5E= +gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250626171442-a998aabb24a7/go.mod h1:jJvuXliNOiG9i8VXrY9vK5Bqv9QwDtswCs3CNIIBvUQ= +gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250626201301-c90924a4efa5 h1:A0GZ9Z+IxL/bD9KfGetobuMTh7x+XLzwwAVWuFldHOs= +gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250626201301-c90924a4efa5/go.mod h1:jJvuXliNOiG9i8VXrY9vK5Bqv9QwDtswCs3CNIIBvUQ= +gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250626204134-2c2a5a5f5193 h1:QOq2tQjE0ViQ31r/eBMUgjnRMth5ZPwoR4L794EzdJs= +gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250626204134-2c2a5a5f5193/go.mod h1:jJvuXliNOiG9i8VXrY9vK5Bqv9QwDtswCs3CNIIBvUQ= +gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250626212313-a152ec93d546 h1:MOMit+kjsRAAfY1jieJUiy2mUaf8RhlevSQihRd86YE= +gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250626212313-a152ec93d546/go.mod h1:jJvuXliNOiG9i8VXrY9vK5Bqv9QwDtswCs3CNIIBvUQ= +gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250626212824-2199e71c62fd h1:NYRlflnOMzwcqEsAMYg79++/jHDNTkF2Rq5ZL0RcrBU= +gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250626212824-2199e71c62fd/go.mod h1:jJvuXliNOiG9i8VXrY9vK5Bqv9QwDtswCs3CNIIBvUQ= diff --git a/internal/app/app.go b/internal/app/app.go index 18b0728..c4dded1 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -2,32 +2,22 @@ package app import ( "context" - "io/fs" - "os" "runtime" "sync" "gittea.marcokittel.de/elio/eliotools/datawriter/internal/dbwriter" "gittea.marcokittel.de/elio/eliotools/logger" - "gittea.marcokittel.de/elio/eliotools/tools" ) type App struct { - wg *sync.WaitGroup - mu sync.Mutex - log logger.Logger - newFolderPath string - processedFolderPath string - lookupPath string - dirCreationRights int + wg *sync.WaitGroup + mu sync.Mutex + log logger.Logger } -func NewApp(newFolderPath string, processedFolderPath string, dirCreationRights int, wg *sync.WaitGroup) *App { +func NewApp(wg *sync.WaitGroup) *App { a := App{log: logger.NewMarcoLogger(), - newFolderPath: newFolderPath, - processedFolderPath: processedFolderPath, - dirCreationRights: dirCreationRights, - wg: wg, + wg: wg, } return &a } @@ -42,35 +32,6 @@ func (a *App) AppendData(data dbwriter.MyStruct) error { //Todo return nil } - -func (a *App) Foo() { - - path, _ := os.Getwd() - ml := logger.NewMarcoLogger() - 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()) - } - - if !newDirExists { - err := tools.Createdir(path+a.newFolderPath, fs.FileMode(a.dirCreationRights)) - if err == nil { - ml.Infof("%s created.", a.newFolderPath) - } - } - - if !processedDirExists { - err := tools.Createdir(path+a.processedFolderPath, fs.FileMode(a.dirCreationRights)) - if err == nil { - ml.Infof("%s created.", a.processedFolderPath) - } - } -} - 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 index 878875b..37f1ced 100644 --- a/internal/dataservice/dataservice.go +++ b/internal/dataservice/dataservice.go @@ -2,20 +2,37 @@ 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" + "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 + listener []event.EventListener + log logger.Logger + ef eliofile.ElioDateiFoo + newFolderPath string + processedFolderPath string + lookupPath string + dirCreationRights int } func (d *DataService) ListenerCount() int { @@ -47,9 +64,12 @@ 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) - })} +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 }