From b1aecd11779dee5107a203798c181ad07c55dc2f Mon Sep 17 00:00:00 2001 From: Arnesh07 Date: Mon, 4 Nov 2019 02:04:44 +0530 Subject: [PATCH] Refreshes submissions daily and after signup --- models/user.go | 26 ++++++++++++++++++++++++++ services/scheduler/scheduler.go | 8 +++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/models/user.go b/models/user.go index 99154f2..8ed8aa6 100644 --- a/models/user.go +++ b/models/user.go @@ -85,6 +85,9 @@ func AddUser(u User) (string, error) { log.Println(err) return "", errors.New("Could not create user: Username already exists") } + err = RefreshSubmissions() + //handle error + return u.ID.Hex(), nil } @@ -471,3 +474,26 @@ func CompareUser(uid1 bson.ObjectId, uid2 string) (Follow.AllWorldRanks, error) return worldRanksComparison, errors.New("UID Invalid") } } + +func RefreshSubmissions() error { + users := GetAllUsers() + websites := [4]string{"codechef","codeforces","spoj","hackerrank"} + var ErrorSubmissions error + + //establishing a goroutine for this "for" loop + for _ , user := range users { + // executing every iteration in a separate goroutine (to be implemented later) + // go func(user User) { + for _ , website := range websites { + err := AddSubmissions(&user, website) + if err != nil { + //Submissions for this particular user is not updated + ErrorSubmissions = errors.New("Submission fetching altered") + } else { + continue + } + } + // }(user) + } + return ErrorSubmissions +} diff --git a/services/scheduler/scheduler.go b/services/scheduler/scheduler.go index dc28d7a..e255afc 100644 --- a/services/scheduler/scheduler.go +++ b/services/scheduler/scheduler.go @@ -2,10 +2,15 @@ package scheduler import ( "github.com/jasonlvhit/gocron" + "github.com/mdg-iitr/Codephile/models" + // "github.com/mdg-iitr/Codephile/models" + ) func task() { //Updates profiles and submissions + _ = models.RefreshSubmissions() + //handle error } func taskWithParams(a int, b string) { @@ -13,7 +18,8 @@ func taskWithParams(a int, b string) { } func StartScheduling() { - // gocron.Every(5).Seconds().Do(task) + // task() + // gocron.Every(10).Seconds().Do(task) gocron.Every(1).Day().Do(task) //task to be done everyday <- gocron.Start() } \ No newline at end of file