Implemented correct CSV File Picking for import

This commit is contained in:
Marco Kittel 2025-06-27 00:01:36 +02:00
parent 8f2ecbc5e5
commit 2feb107c5a
5 changed files with 64 additions and 59 deletions

View File

@ -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()

4
go.mod
View File

@ -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

24
go.sum
View File

@ -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=

View File

@ -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!")

View File

@ -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
}