lens @ a98acb9c8b86a2c2f35841c86d3c3f1d7c176b61

fix: Add on fail for exif

Also remove unique index from thumbails path, because on fail it saves a
empty path.
 1diff --git a/pkg/database/sql/media.go b/pkg/database/sql/media.go
 2index 4b48608a19f623d1b6021171ce0942fd88d10fbb..b13e267211958c82af7dafd03db2bd0b750cb5a4 100644
 3--- a/pkg/database/sql/media.go
 4+++ b/pkg/database/sql/media.go
 5@@ -43,8 +43,8 @@ 	}
 6 
 7 	MediaThumbnail struct {
 8 		gorm.Model
 9-		Path    string `gorm:"not null;unique"`
10-		MediaID uint   `gorm:"not null"`
11+		Path    string
12+		MediaID uint `gorm:"not null"`
13 		Media   Media
14 	}
15 
16diff --git a/pkg/worker/scanner/exif_scanner.go b/pkg/worker/scanner/exif_scanner.go
17index da63c0b790a1491c49c7b0ad3b8cf3bdcc91baa3..c265223786ad32e266ec2809d6731471d0688787 100644
18--- a/pkg/worker/scanner/exif_scanner.go
19+++ b/pkg/worker/scanner/exif_scanner.go
20@@ -30,6 +30,10 @@ 		Size: 100,
21 	})
22 }
23 
24+func (t *EXIFScanner) OnFail(ctx context.Context, media *repository.Media, _ error) {
25+	_ = t.repository.CreateEXIF(ctx, media.ID, &repository.MediaEXIF{})
26+}
27+
28 func (e *EXIFScanner) Process(ctx context.Context, m *repository.Media) error {
29 	exif, err := coroutine.WrapProcess(ctx, func() (*repository.MediaEXIF, error) { return fileop.ReadExif(m.Path) })
30 	if err != nil {