| 60 | } |
| 61 | |
| 62 | func (s *ScheduledTaskManager) Run() { |
| 63 | log.Infof("cron job manager start") |
| 64 | |
| 65 | s.questionService.SitemapCron(context.Background()) |
| 66 | c := cron.New() |
| 67 | _, err := c.AddFunc("0 */1 * * *", func() { |
| 68 | ctx := context.Background() |
| 69 | log.Infof("sitemap cron execution") |
| 70 | s.questionService.SitemapCron(ctx) |
| 71 | }) |
| 72 | if err != nil { |
| 73 | log.Error(err) |
| 74 | } |
| 75 | |
| 76 | _, err = c.AddFunc("0 */1 * * *", func() { |
| 77 | ctx := context.Background() |
| 78 | log.Infof("refresh hottest cron execution") |
| 79 | s.questionService.RefreshHottestCron(ctx) |
| 80 | }) |
| 81 | if err != nil { |
| 82 | log.Error(err) |
| 83 | } |
| 84 | |
| 85 | // Check for expired user suspensions every 10 minutes |
| 86 | _, err = c.AddFunc("*/10 * * * *", func() { |
| 87 | ctx := context.Background() |
| 88 | log.Infof("checking expired user suspensions") |
| 89 | err := s.userAdminService.CheckAndUnsuspendExpiredUsers(ctx) |
| 90 | if err != nil { |
| 91 | log.Errorf("failed to check expired user suspensions: %v", err) |
| 92 | } |
| 93 | }) |
| 94 | if err != nil { |
| 95 | log.Error(err) |
| 96 | } |
| 97 | |
| 98 | if s.serviceConfig.CleanUpUploads { |
| 99 | log.Infof("clean up uploads cron enabled") |
| 100 | |
| 101 | conf := s.serviceConfig |
| 102 | _, err = c.AddFunc(fmt.Sprintf("0 */%d * * *", conf.CleanOrphanUploadsPeriodHours), func() { |
| 103 | log.Infof("clean orphan upload files cron execution") |
| 104 | s.fileRecordService.CleanOrphanUploadFiles(context.Background()) |
| 105 | }) |
| 106 | if err != nil { |
| 107 | log.Error(err) |
| 108 | } |
| 109 | |
| 110 | _, err = c.AddFunc(fmt.Sprintf("0 0 */%d * *", conf.PurgeDeletedFilesPeriodDays), func() { |
| 111 | log.Infof("purge deleted files cron execution") |
| 112 | s.fileRecordService.PurgeDeletedFiles(context.Background()) |
| 113 | }) |
| 114 | if err != nil { |
| 115 | log.Error(err) |
| 116 | } |
| 117 | } |
| 118 | c.Start() |
| 119 | } |