diff --git a/db/db.go b/db/db.go index d58c15d..2ce8edb 100644 --- a/db/db.go +++ b/db/db.go @@ -31,7 +31,6 @@ import ( "modernc.org/sqlite" ) - // https://github.com/ent/ent/discussions/1667#discussioncomment-1132296 type sqliteDriver struct { *sqlite.Driver @@ -237,8 +236,8 @@ func (c *client) GetAllEpisodes() (ent.Episodes, error) { return ep, err } -func (c *client) DeleteEpisode(id int) error { - _, err := c.ent.Episode.Delete().Where(episode.ID(id)).Exec(context.TODO()) +func (c *client) DeleteEpisode(ids ...int) error { + _, err := c.ent.Episode.Delete().Where(episode.IDIn(ids...)).Exec(context.TODO()) return err } func (c *client) GetEpisode(seriesId, seasonNum, episodeNum int) (*ent.Episode, error) { diff --git a/db/interface.go b/db/interface.go index a3033b6..5c30ca4 100644 --- a/db/interface.go +++ b/db/interface.go @@ -75,7 +75,7 @@ type MediaApis interface { type EpisodeApis interface { GetAllEpisodes() (ent.Episodes, error) - DeleteEpisode(id int) error + DeleteEpisode(ids ...int) error GetEpisode(seriesId, seasonNum, episodeNum int) (*ent.Episode, error) GetEpisodeByID(epID int) (*ent.Episode, error) UpdateEpiode(episodeId int, name, overview string) error diff --git a/engine/housekeeping.go b/engine/housekeeping.go index 7913e35..c831bfb 100644 --- a/engine/housekeeping.go +++ b/engine/housekeeping.go @@ -37,21 +37,21 @@ func (c *Engine) checkDbScraps() error { log.Debugf("get all episodes error: %v", err) return err } - count := 0 + 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) - if err := c.db.DeleteEpisode(ep.ID); err != nil { - log.Errorf("delete scrap episode record error: %v", err) - } - count++ - if count%100 == 0 { - log.Infof("%v scrap episode records removed...", count) - } + toDeleteIds = append(toDeleteIds, ep.ID) } } - log.Infof("%v scrap episode records removed...", count) + + 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 }