refac: decouple persistence and image storage behind driver registries

This commit is contained in:
fsylvain committed 2026-10-06 02:13:35 +02:00
1 parent 421cfafec3
commit 81e299f09a
46 files changed
+1036 -374

No files matched your search

@@ -24,10 +24,11 @@ var rasterFormats = map[string]string{
type CreateImageUseCase struct {
imageRepository image.Repository
storage image.Storage
}
func NewCreateImageUseCase(imageRepository image.Repository) *CreateImageUseCase {
return &CreateImageUseCase{imageRepository}
func NewCreateImageUseCase(imageRepository image.Repository, storage image.Storage) *CreateImageUseCase {
return &CreateImageUseCase{imageRepository, storage}
}
func (g *CreateImageUseCase) CreateImage(input image.ImageInput) (image.Image, error) {
@@ -46,8 +47,13 @@ func (g *CreateImageUseCase) CreateImage(input image.ImageInput) (image.Image, e
}
checksum := sha256.Sum256(data)
return g.imageRepository.Create(image.ImageInput{
Content: bytes.NewReader(data),
storedName, err := g.storage.Put(input.ContentType, bytes.NewReader(data))
if err != nil {
return image.Image{}, err
}
created, err := g.imageRepository.Create(image.Image{
Path: image.PublicPath(storedName),
Filename: image.NormalizeUploadFilename(input.Filename, input.ContentType),
Size: int64(len(data)),
ContentType: input.ContentType,
@@ -56,6 +62,11 @@ func (g *CreateImageUseCase) CreateImage(input image.ImageInput) (image.Image, e
SHA256: hex.EncodeToString(checksum[:]),
UploadedByID: input.UploadedByID,
})
if err != nil {
_ = g.storage.Delete(storedName)
return image.Image{}, err
}
return created, nil
}
func readWithinLimit(content io.Reader) ([]byte, error) {