feat: media duplicate purge, part 1 of 3: persisted purge settings and the purge API
This commit is contained in:
1 parent
161ddc0f7d
commit
e82d0ce254
25 files changed
+2459
-41
No files matched your search
@@ -0,0 +1,61 @@
|
||||
package useCases
|
||||
|
||||
import (
|
||||
"RenewCMS/internal/domain/article"
|
||||
"RenewCMS/internal/domain/image"
|
||||
)
|
||||
|
||||
const purgePreviewListLimit = 5
|
||||
|
||||
type PurgePreviewGroup struct {
|
||||
KeepID uint32
|
||||
Filename string
|
||||
URL string
|
||||
UsedIn int
|
||||
Merged int
|
||||
}
|
||||
|
||||
type PurgePreview struct {
|
||||
Groups int
|
||||
Copies int
|
||||
Articles int
|
||||
List []PurgePreviewGroup
|
||||
More int
|
||||
Fingerprint string
|
||||
}
|
||||
|
||||
type PreviewPurgeUseCase struct {
|
||||
planner *purgePlanner
|
||||
}
|
||||
|
||||
func NewPreviewPurgeUseCase(imageRepository image.Repository, articleRepository article.Repository) *PreviewPurgeUseCase {
|
||||
return &PreviewPurgeUseCase{&purgePlanner{imageRepository, articleRepository}}
|
||||
}
|
||||
|
||||
func (u *PreviewPurgeUseCase) Preview() (PurgePreview, error) {
|
||||
plan, err := u.planner.plan()
|
||||
if err != nil {
|
||||
return PurgePreview{}, err
|
||||
}
|
||||
|
||||
shown := min(len(plan.groups), purgePreviewListLimit)
|
||||
list := make([]PurgePreviewGroup, 0, shown)
|
||||
for _, group := range plan.groups[:shown] {
|
||||
list = append(list, PurgePreviewGroup{
|
||||
KeepID: group.kept.ID,
|
||||
Filename: group.kept.Filename,
|
||||
URL: group.kept.Path,
|
||||
UsedIn: group.keptUsage,
|
||||
Merged: len(group.mergedIds),
|
||||
})
|
||||
}
|
||||
|
||||
return PurgePreview{
|
||||
Groups: len(plan.groups),
|
||||
Copies: plan.copies,
|
||||
Articles: plan.articles,
|
||||
List: list,
|
||||
More: len(plan.groups) - shown,
|
||||
Fingerprint: plan.fingerprint,
|
||||
}, nil
|
||||
}
|
||||
Reference in new issue
Block a user