@@ -24,36 +24,45 @@ import (
2424 "fmt"
2525
2626 "github.com/apache/answer/internal/service/content"
27+ "github.com/apache/answer/internal/service/file_record"
28+ "github.com/apache/answer/internal/service/service_config"
2729 "github.com/apache/answer/internal/service/siteinfo_common"
2830 "github.com/robfig/cron/v3"
2931 "github.com/segmentfault/pacman/log"
3032)
3133
3234// ScheduledTaskManager scheduled task manager
3335type ScheduledTaskManager struct {
34- siteInfoService siteinfo_common.SiteInfoCommonService
35- questionService * content.QuestionService
36+ siteInfoService siteinfo_common.SiteInfoCommonService
37+ questionService * content.QuestionService
38+ fileRecordService * file_record.FileRecordService
39+ serviceConfig * service_config.ServiceConfig
3640}
3741
3842// NewScheduledTaskManager new scheduled task manager
3943func NewScheduledTaskManager (
4044 siteInfoService siteinfo_common.SiteInfoCommonService ,
4145 questionService * content.QuestionService ,
46+ fileRecordService * file_record.FileRecordService ,
47+ serviceConfig * service_config.ServiceConfig ,
4248) * ScheduledTaskManager {
4349 manager := & ScheduledTaskManager {
44- siteInfoService : siteInfoService ,
45- questionService : questionService ,
50+ siteInfoService : siteInfoService ,
51+ questionService : questionService ,
52+ fileRecordService : fileRecordService ,
53+ serviceConfig : serviceConfig ,
4654 }
4755 return manager
4856}
4957
5058func (s * ScheduledTaskManager ) Run () {
51- fmt .Println ("start cron" )
59+ log .Infof ("cron job manager start" )
60+
5261 s .questionService .SitemapCron (context .Background ())
5362 c := cron .New ()
5463 _ , err := c .AddFunc ("0 */1 * * *" , func () {
5564 ctx := context .Background ()
56- fmt . Println ("sitemap cron execution" )
65+ log . Infof ("sitemap cron execution" )
5766 s .questionService .SitemapCron (ctx )
5867 })
5968 if err != nil {
@@ -62,12 +71,32 @@ func (s *ScheduledTaskManager) Run() {
6271
6372 _ , err = c .AddFunc ("0 */1 * * *" , func () {
6473 ctx := context .Background ()
65- fmt . Println ("refresh hottest cron execution" )
74+ log . Infof ("refresh hottest cron execution" )
6675 s .questionService .RefreshHottestCron (ctx )
6776 })
6877 if err != nil {
6978 log .Error (err )
7079 }
7180
81+ if s .serviceConfig .CleanUpUploads {
82+ log .Infof ("clean up uploads cron enabled" )
83+
84+ conf := s .serviceConfig
85+ _ , err = c .AddFunc (fmt .Sprintf ("0 */%d * * *" , conf .CleanOrphanUploadsPeriodHours ), func () {
86+ log .Infof ("clean orphan upload files cron execution" )
87+ s .fileRecordService .CleanOrphanUploadFiles (context .Background ())
88+ })
89+ if err != nil {
90+ log .Error (err )
91+ }
92+
93+ _ , err = c .AddFunc (fmt .Sprintf ("0 0 */%d * *" , conf .PurgeDeletedFilesPeriodDays ), func () {
94+ log .Infof ("purge deleted files cron execution" )
95+ s .fileRecordService .PurgeDeletedFiles (context .Background ())
96+ })
97+ if err != nil {
98+ log .Error (err )
99+ }
100+ }
72101 c .Start ()
73102}
0 commit comments