mirror of
https://github.com/simon-ding/polaris.git
synced 2026-03-09 19:20:46 +08:00
54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
package engine
|
|
|
|
import (
|
|
"polaris/ent/media"
|
|
"polaris/log"
|
|
)
|
|
|
|
func (c *Engine) housekeeping() error {
|
|
log.Infof("start housekeeping tasks...")
|
|
|
|
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 {
|
|
return err
|
|
}
|
|
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)
|
|
if err := c.db.DeleteEpisode(ep.ID); err != nil {
|
|
log.Errorf("delete scrap episode record error: %v", err)
|
|
}
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (c *Engine) checkImageFilesInterity() error {
|
|
//TODO: download missing image files, remove unused image files
|
|
return nil
|
|
} |