mirror of
https://github.com/simon-ding/polaris.git
synced 2026-02-06 23:21:00 +08:00
66 lines
1.6 KiB
Go
66 lines
1.6 KiB
Go
package engine
|
|
|
|
import (
|
|
"polaris/ent/media"
|
|
"polaris/log"
|
|
)
|
|
|
|
func (c *Engine) housekeeping() (err error) {
|
|
log.Infof("start housekeeping tasks...")
|
|
defer func() {
|
|
log.Infof("housekeeping tasks completed. err: %v", err)
|
|
}()
|
|
|
|
if err := c.checkDbScraps(); err != nil {
|
|
return err
|
|
}
|
|
if err := c.checkImageFilesInterity(); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (c *Engine) checkDbScraps() error {
|
|
//TODO: remove episodes that are not associated with any series
|
|
|
|
tvs := c.db.GetMediaWatchlist(media.MediaTypeTv)
|
|
movies := c.db.GetMediaWatchlist(media.MediaTypeMovie)
|
|
|
|
validMediaIDs := make(map[int]bool, len(tvs)+len(movies))
|
|
for _, tv := range tvs {
|
|
validMediaIDs[tv.ID] = true
|
|
}
|
|
for _, movie := range movies {
|
|
validMediaIDs[movie.ID] = true
|
|
}
|
|
|
|
allEpisodes, err := c.db.GetAllEpisodes()
|
|
if err != nil {
|
|
log.Debugf("get all episodes error: %v", err)
|
|
return err
|
|
}
|
|
|
|
log.Infof("check db scraps, total episodes: %v, total media: %v", len(allEpisodes), len(validMediaIDs))
|
|
toDeleteIds := make([]int, 0)
|
|
for _, ep := range allEpisodes {
|
|
if _, ok := validMediaIDs[ep.MediaID]; !ok {
|
|
//log.Infof("remove scrap episode record: %v S%vE%v", ep.MediaID, ep.SeasonNumber, ep.EpisodeNumber)
|
|
toDeleteIds = append(toDeleteIds, ep.ID)
|
|
}
|
|
}
|
|
|
|
log.Infof("%v scrap episode records will be removed...", len(toDeleteIds))
|
|
|
|
if err := c.db.DeleteEpisode(toDeleteIds...); err != nil {
|
|
log.Errorf("delete scrap episode records error: %v", err)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (c *Engine) checkImageFilesInterity() error {
|
|
//TODO: download missing image files, remove unused image files
|
|
return nil
|
|
}
|