diff --git a/cmd/cheesegull-migrate-mirror/main.go b/cmd/cheesegull-migrate-mirror/main.go index 0115d3fe4591724e1424cbebee79c5028ea48f9a..2cb96e02b9d221b85fcf10cbd2ef91d3e5238f8c 100644 --- a/cmd/cheesegull-migrate-mirror/main.go +++ b/cmd/cheesegull-migrate-mirror/main.go @@ -4,11 +4,11 @@ package main import ( - "fmt" - "os" - "encoding/json" + "fmt" "io/ioutil" + "os" + "sync" _ "github.com/go-sql-driver/mysql" "github.com/osuripple/cheesegull" @@ -43,12 +43,23 @@ func main() { app.Run(os.Args) } +var createSetChan = make(chan cheesegull.BeatmapSet, 100) +var errorList = make([]error, 0, 256) +var wg = new(sync.WaitGroup) +var p sql.Provided + func execute(c *cli.Context) error { - p, err := sql.Open("mysql", mysqlDSN) + var err error + p, err = sql.Open("mysql", mysqlDSN) if err != nil { return err } + for i := 0; i < 50; i++ { + go thr() + wg.Add(1) + } + files, err := ioutil.ReadDir("data/s/") if err != nil { return err @@ -57,8 +68,6 @@ func execute(c *cli.Context) error { bar := pb.StartNew(len(files)) bar.Start() - errorList := make([]error, 0, 256) - for _, file := range files { bar.Increment() if file.IsDir() { @@ -89,11 +98,11 @@ func execute(c *cli.Context) error { s.ChildrenBeatmaps2 = append(s.ChildrenBeatmaps2, b) } - err = p.CreateSet(s) - if err != nil { - return err - } + createSetChan <- s } + close(createSetChan) + wg.Wait() + bar.FinishPrint("Done!") if len(errorList) > 0 { @@ -105,3 +114,13 @@ func execute(c *cli.Context) error { return nil } + +func thr() { + for i := range createSetChan { + err := p.CreateSet(i) + if err != nil { + fmt.Println(err) + } + } + wg.Done() +}