package scylladb import ( "time" gocnjhelper "git.clickandjoin.umbach.dev/ClickandJoin/go-cnj-helper" "git.clickandjoin.umbach.dev/ClickandJoin/go-cnj-helper/dbstructs" "github.com/gocql/gocql" ) func TableCleaner() { currentTime := time.Now() desiredTime := time.Date(currentTime.Year(), currentTime.Month(), currentTime.Day()+1, 3, 0, 0, 0, currentTime.Location()) duration := desiredTime.Sub(currentTime) time.Sleep(duration) var userSignUpProcesses []dbstructs.UserSignUpProcess if err := Session.Query(gocnjhelper.DbMUserSignUpProcess.SelectAll()).SelectRelease(&userSignUpProcesses); err != nil { gocnjhelper.LogErrorf("Failed to select user sign up processes, err: %s", err.Error()) return } var expiredUserSignUpProcesses []dbstructs.UserSignUpProcess currentTimeUnix := time.Now().Unix() for _, us := range userSignUpProcesses { if us.ExpiresAt < currentTimeUnix { expiredUserSignUpProcesses = append(expiredUserSignUpProcesses, us) } } if len(expiredUserSignUpProcesses) > 0 { batch := Session.NewBatch(gocql.UnloggedBatch) q := "DELETE FROM clicknjoin.user_sign_up_process WHERE x_token = ?" for _, us := range expiredUserSignUpProcesses { batch.Query(q, us.XToken) } if err := Session.ExecuteBatch(batch); err != nil { gocnjhelper.LogErrorf("Failed to execute batch, err:", err.Error()) return } } // restart timer go TableCleaner() }