commit e9c41ae4fd73749da9a3f0cce97e3d1f4b114432 Author: shoopea Date: Sun Feb 23 18:11:05 2025 +0100 first version diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..e321489 --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module git.siteop.biz/shoopea/peaq.tasks + +go 1.23.2 diff --git a/peaq_tasks.go b/peaq_tasks.go new file mode 100644 index 0000000..c117c2c --- /dev/null +++ b/peaq_tasks.go @@ -0,0 +1,64 @@ +package main + +import ( + "encoding/csv" + "log" + "os" + "path/filepath" +) + +type User struct { + EVM string `json:"evm"` + Email string `json:"email"` +} + +var ( + users map[string]*User + lines int +) + +func main() { + users = make(map[string]*User) + // Get the current working directory + cwd, err := os.Getwd() + if err != nil { + log.Fatalf("failed to get current directory: %w", err) + } + + // Read files in the directory + files, err := os.ReadDir(cwd) + if err != nil { + log.Fatalf("failed to read directory: %w", err) + } + + // Loop through files and open CSVs + for _, file := range files { + if !file.IsDir() && filepath.Ext(file.Name()) == ".csv" { + log.Printf("Opening: %s\n", file.Name()) + f, err := os.Open(file.Name()) + if err != nil { + log.Fatalf("failed to open file %s: %w", file.Name(), err) + } + defer f.Close() + + reader := csv.NewReader(f) + records, err := reader.ReadAll() + if err != nil { + log.Fatalf("failed to read CSV %s: %w", file.Name(), err) + } + + log.Printf("Read %d records from %s\n", len(records), file.Name()) + lines += len(records) + + for _, record := range records[1:] { + u := &User{ + EVM: record[0], + Email: record[1], + } + users[u.EVM+`+`+u.Email] = u + } + } + } + log.Printf("Found %d unique records from %d lines", len(users), lines) + return +}