aboutsummaryrefslogtreecommitdiff
path: root/cmd/xlsx/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/xlsx/main.go')
-rw-r--r--cmd/xlsx/main.go88
1 files changed, 59 insertions, 29 deletions
diff --git a/cmd/xlsx/main.go b/cmd/xlsx/main.go
index 4ccb01e..b960448 100644
--- a/cmd/xlsx/main.go
+++ b/cmd/xlsx/main.go
@@ -2,46 +2,76 @@ package main
import (
"airlines/pkg/adapters/xlsx"
+ csvwriter "airlines/pkg/csvWriter"
"fmt"
"os"
+ "sync"
)
-// func readXLSX(path string) {
-// tickets, err := xlsx.UnmarshallXlsxFile("/home/alex/ds-data/YourBoardingPassDotAero/YourBoardingPassDotAero-2017-11-30.xlsx")
-// if err != nil {
-// panic(err)
-// }
-
-// }
-
func main() {
tickets := make([]xlsx.Ticket, 0)
baseDir := "/home/alex/ds-data/YourBoardingPassDotAero/"
items, _ := os.ReadDir(baseDir)
+ var mu sync.Mutex
+ var wg sync.WaitGroup
+ sem := make(chan struct{}, 8)
for _, item := range items {
if !item.IsDir() {
- fmt.Println("Processing file:", item.Name())
- parsedTickets, err := xlsx.UnmarshallXlsxFile(baseDir + item.Name())
- if err != nil {
- panic(err)
- }
- tickets = append(tickets, parsedTickets...)
+ wg.Add(1)
+ sem <- struct{}{}
+ go func(name string) {
+ defer func() { <-sem }()
+ defer wg.Done()
+ fmt.Println("Processing file:", name)
+ parsedTickets, err := xlsx.UnmarshallXlsxFile(baseDir + name)
+ if err != nil {
+ panic(err)
+ }
+ mu.Lock()
+ defer mu.Unlock()
+ tickets = append(tickets, parsedTickets...)
+
+ }(item.Name())
}
}
- // for _, ticket := range tickets {
- // u, err := ticket.ToUser()
- // if err != nil {
- // panic(err)
- // }
- // f, err := ticket.ToFlight()
- // if err != nil {
- // panic(err)
- // }
- // c, err := ticket.ToCard()
- // if err != nil {
- // panic(err)
- // }
- // fmt.Printf("%+v %+v %+v\n", u, f, c)
- // }
+ wg.Wait()
+
+ fmt.Println("finished")
+
+ file, err := csvwriter.NewCsvWriter("/tmp/output.csv")
+ if err != nil {
+ panic(err)
+ }
+ defer file.Close()
+
+ file.Write([]string{"Number", "FromAer", "FromCoordsLat", "FromCoordsLong", "ToAer", "ToCoordsLat", "ToCoordsLong", "DateUnix"})
+
+ for i, ticket := range tickets {
+ if i%(len(tickets)/100) == 0 {
+ fmt.Printf("%f\n", float32(i)/float32(len(tickets))*100)
+ }
+ if i%(len(tickets)/100*5) == 0 {
+ file.Sync()
+ }
+ // u, err := ticket.ToUser()
+ // if err != nil {
+ // panic(err)
+ // }
+ f, err := ticket.ToFlight()
+ if err != nil {
+ panic(err)
+ }
+ file.Write([]string{f.Number,
+ f.From, fmt.Sprintf("%v", f.FromCoords.Lat), fmt.Sprintf("%v", f.FromCoords.Long),
+ f.To, fmt.Sprintf("%v", f.ToCoords.Lat), fmt.Sprintf("%v", f.ToCoords.Long),
+ fmt.Sprintf("%v", f.Date.Unix()),
+ })
+ // c, err := ticket.ToCard()
+ // if err != nil {
+ // panic(err)
+ // }
+ // fmt.Printf("%+v %+v %+v\n", u, f, c)
+ }
+ file.Sync()
}