feat: image variants per image
This commit is contained in:
1 parent
f567866161
commit
951fef18ba
92 files changed
+8695
-413
No files matched your search
@@ -0,0 +1,44 @@
|
||||
package useCases
|
||||
|
||||
import (
|
||||
"RenewCMS/internal/domain/image"
|
||||
"context"
|
||||
)
|
||||
|
||||
type GenerateImageVariantUseCase struct {
|
||||
images image.Repository
|
||||
variants image.VariantRepository
|
||||
files image.VariantFileRepository
|
||||
renderer image.VariantRenderer
|
||||
generator *ServeVariantUseCase
|
||||
}
|
||||
|
||||
func NewGenerateImageVariantUseCase(images image.Repository, variants image.VariantRepository, files image.VariantFileRepository, renderer image.VariantRenderer, generator *ServeVariantUseCase) *GenerateImageVariantUseCase {
|
||||
return &GenerateImageVariantUseCase{images, variants, files, renderer, generator}
|
||||
}
|
||||
|
||||
func (u *GenerateImageVariantUseCase) Generate(ctx context.Context, id uint32, name string) (ImageVariantView, error) {
|
||||
img, err := u.images.Get(id)
|
||||
if err != nil {
|
||||
return ImageVariantView{}, err
|
||||
}
|
||||
variant, err := u.variants.Get(name)
|
||||
if err != nil {
|
||||
return ImageVariantView{}, err
|
||||
}
|
||||
if !variant.Enabled || variant.Name != name {
|
||||
return ImageVariantView{}, image.ErrVariantNotFound
|
||||
}
|
||||
if isVectorSource(img) {
|
||||
return ImageVariantView{}, image.ErrVariantSourceUnsupported
|
||||
}
|
||||
storedName := image.StoredName(img.Path)
|
||||
if _, err := u.generator.Generate(ctx, variant, storedName); err != nil {
|
||||
return ImageVariantView{}, err
|
||||
}
|
||||
rows, err := currentFiles(u.files, storedName)
|
||||
if err != nil {
|
||||
return ImageVariantView{}, err
|
||||
}
|
||||
return viewOf(variant, img, rows, u.renderer.EncodableFormats()), nil
|
||||
}
|
||||
Reference in new issue
Block a user