feat: image variants per image

This commit is contained in:
fsylvain committed 2026-10-08 19:57:51 +02:00
1 parent f567866161
commit 951fef18ba
92 files changed
+8695 -413

No files matched your search

@@ -0,0 +1,33 @@
package useCases
import (
"RenewCMS/internal/domain/image"
"context"
)
func (u *ServeVariantUseCase) Generate(ctx context.Context, variant image.Variant, storedName string) (image.VariantFile, error) {
source, err := u.storage.Open(storedName)
if err != nil {
return image.VariantFile{}, err
}
defer source.Content.Close()
if servedAsIs(storedName, source.Content) {
return image.VariantFile{}, image.ErrVariantSourceUnsupported
}
if source.Size > u.maxSourceBytes {
return image.VariantFile{}, image.ErrSourceTooLarge
}
settings := variant.Settings()
fingerprint := settings.Fingerprint()
served, existing, hit, err := u.lookupCached(variant.Name, storedName, fingerprint, image.VariantETag(settings, storedName))
if err != nil {
return image.VariantFile{}, err
}
if hit {
_ = served.Content.Close()
return existing, nil
}
return u.generated(ctx, variant, storedName, fingerprint, existing)
}