Add filesystem based blob storage (#3187)

* Refactor transaction hooks. Add preCommit
* Add BlobStore
* Use blobStore for tag images
* Use blobStore for studio images
* Use blobStore for performer images
* Use blobStore for scene covers
* Don't generate screenshots in legacy directory
* Run post-hooks outside original transaction
* Use blobStore for movie images
* Remove unnecessary DestroyImage methods
* Add missing filter for scene cover
* Add covers to generate options
* Add generate cover option to UI
* Add screenshot migration
* Delete thumb files as part of screenshot migration
This commit is contained in:
WithoutPants
2023-03-17 10:52:49 +11:00
committed by GitHub
parent c3081700c0
commit 7cff71c35f
105 changed files with 2647 additions and 1086 deletions

View File

@@ -4088,53 +4088,7 @@ func TestSceneUpdateSceneCover(t *testing.T) {
sceneID := sceneIDs[sceneIdxWithGallery]
image := []byte("image")
if err := qb.UpdateCover(ctx, sceneID, image); err != nil {
return fmt.Errorf("Error updating scene cover: %s", err.Error())
}
// ensure image set
storedImage, err := qb.GetCover(ctx, sceneID)
if err != nil {
return fmt.Errorf("Error getting image: %s", err.Error())
}
assert.Equal(t, storedImage, image)
// set nil image
err = qb.UpdateCover(ctx, sceneID, nil)
if err == nil {
return fmt.Errorf("Expected error setting nil image")
}
return nil
}); err != nil {
t.Error(err.Error())
}
}
func TestSceneDestroySceneCover(t *testing.T) {
if err := withTxn(func(ctx context.Context) error {
qb := db.Scene
sceneID := sceneIDs[sceneIdxWithGallery]
image := []byte("image")
if err := qb.UpdateCover(ctx, sceneID, image); err != nil {
return fmt.Errorf("Error updating scene image: %s", err.Error())
}
if err := qb.DestroyCover(ctx, sceneID); err != nil {
return fmt.Errorf("Error destroying scene cover: %s", err.Error())
}
// image should be nil
storedImage, err := qb.GetCover(ctx, sceneID)
if err != nil {
return fmt.Errorf("Error getting image: %s", err.Error())
}
assert.Nil(t, storedImage)
return nil
return testUpdateImage(t, ctx, sceneID, qb.UpdateCover, qb.GetCover)
}); err != nil {
t.Error(err.Error())
}