feat: Sites feature backend

This commit is contained in:
Florian Sylvain committed 2026-10-14 03:56:50 +02:00
1 parent 45fcbd890d
commit a11338094e
98 files changed
+5365 -214

No files matched your search

+10 -3
View File
@@ -3,6 +3,7 @@ package useCases
import (
"RenewCMS/internal/domain/article"
"RenewCMS/internal/domain/image"
"RenewCMS/internal/domain/site"
"crypto/sha256"
"encoding/hex"
"slices"
@@ -26,6 +27,7 @@ type purgePlan struct {
type purgePlanner struct {
imageRepository image.Repository
articleRepository article.Repository
sites site.Repository
}
func (p *purgePlanner) plan() (purgePlan, error) {
@@ -38,11 +40,16 @@ func (p *purgePlanner) plan() (purgePlan, error) {
return purgePlan{}, err
}
siteUsage, err := siteImageUsage(p.sites)
if err != nil {
return purgePlan{}, err
}
groups := []purgeGroup{}
copies := 0
touched := map[uint32]bool{}
for _, members := range groupByHash(duplicates) {
group, planned := planGroup(members, articles)
group, planned := planGroup(members, articles, siteUsage)
if !planned {
continue
}
@@ -87,11 +94,11 @@ func usageOf(img image.Image, articles []article.Article) int {
return used
}
func planGroup(members []image.Image, articles []article.Article) (purgeGroup, bool) {
func planGroup(members []image.Image, articles []article.Article, siteUsage map[uint32]int) (purgeGroup, bool) {
usage := make(map[uint32]int, len(members))
anyUsed := false
for _, member := range members {
usage[member.ID] = usageOf(member, articles)
usage[member.ID] = usageOf(member, articles) + siteUsage[member.ID]
anyUsed = anyUsed || usage[member.ID] > 0
}
if !anyUsed {