batch delete

This commit is contained in:
Simon Ding
2025-11-12 17:08:33 +08:00
parent 6a12c380f1
commit 4825cda458
3 changed files with 12 additions and 13 deletions

View File

@@ -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) {

View File

@@ -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

View File

@@ -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
}