Files
go-common/app/interface/main/tv/service/app/pages.go
2019-04-22 18:49:16 +08:00

52 lines
1.2 KiB
Go

package service
import (
"context"
"time"
"go-common/library/log"
"go-common/library/sync/errgroup"
)
// loadPagesproc loads the mod&zone&home pages
func (s *Service) loadPagesproc() {
for {
time.Sleep(time.Duration(s.conf.Cfg.PageReload))
s.loadPages()
}
}
func (s *Service) loadPages() {
defer elapsed("loadPages")() // record page loading time
pCtx := context.TODO()
// prepare pgc & ugc data
g, errCtx := errgroup.WithContext(pCtx)
g.Go(func() (err error) {
return s.filterIntervs(errCtx)
})
g.Go(func() (err error) {
return s.prepareUGCData(errCtx)
})
g.Go(func() (err error) {
s.preparePGCData(errCtx)
return nil
})
if err := g.Wait(); err != nil {
log.Error("loadPages PrepareData Err %v", err)
return
}
// load page data
if err := s.zonesData(pCtx); err != nil {
log.Error("loadPages, zonesData Err %v", err)
return
} // zonepage depends on PGCData refresh
if err := s.loadHome(pCtx); err != nil {
log.Error("loadPages, homeData Err %v", err)
return
} // homepage depends on the zone data from Zone's data
if err := s.loadMods(pCtx); err != nil {
log.Error("loadPages, Module Data Err %v", err)
return
} // modpage depends on home's recom and zone's pgc data
}