mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 04:14:39 +03:00
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:
@@ -537,6 +537,10 @@ func runTests(m *testing.M) int {
|
||||
f.Close()
|
||||
databaseFile := f.Name()
|
||||
db = sqlite.NewDatabase()
|
||||
db.SetBlobStoreOptions(sqlite.BlobStoreOptions{
|
||||
UseDatabase: true,
|
||||
// don't use filesystem
|
||||
})
|
||||
|
||||
if err := db.Open(databaseFile); err != nil {
|
||||
panic(fmt.Sprintf("Could not initialize database: %s", err.Error()))
|
||||
@@ -566,11 +570,11 @@ func populateDB() error {
|
||||
|
||||
// TODO - link folders to zip files
|
||||
|
||||
if err := createMovies(ctx, sqlite.MovieReaderWriter, moviesNameCase, moviesNameNoCase); err != nil {
|
||||
if err := createMovies(ctx, db.Movie, moviesNameCase, moviesNameNoCase); err != nil {
|
||||
return fmt.Errorf("error creating movies: %s", err.Error())
|
||||
}
|
||||
|
||||
if err := createTags(ctx, sqlite.TagReaderWriter, tagsNameCase, tagsNameNoCase); err != nil {
|
||||
if err := createTags(ctx, db.Tag, tagsNameCase, tagsNameNoCase); err != nil {
|
||||
return fmt.Errorf("error creating tags: %s", err.Error())
|
||||
}
|
||||
|
||||
@@ -578,7 +582,7 @@ func populateDB() error {
|
||||
return fmt.Errorf("error creating performers: %s", err.Error())
|
||||
}
|
||||
|
||||
if err := createStudios(ctx, sqlite.StudioReaderWriter, studiosNameCase, studiosNameNoCase); err != nil {
|
||||
if err := createStudios(ctx, db.Studio, studiosNameCase, studiosNameNoCase); err != nil {
|
||||
return fmt.Errorf("error creating studios: %s", err.Error())
|
||||
}
|
||||
|
||||
@@ -594,7 +598,7 @@ func populateDB() error {
|
||||
return fmt.Errorf("error creating images: %s", err.Error())
|
||||
}
|
||||
|
||||
if err := addTagImage(ctx, sqlite.TagReaderWriter, tagIdxWithCoverImage); err != nil {
|
||||
if err := addTagImage(ctx, db.Tag, tagIdxWithCoverImage); err != nil {
|
||||
return fmt.Errorf("error adding tag image: %s", err.Error())
|
||||
}
|
||||
|
||||
@@ -602,15 +606,15 @@ func populateDB() error {
|
||||
return fmt.Errorf("error creating saved filters: %s", err.Error())
|
||||
}
|
||||
|
||||
if err := linkMovieStudios(ctx, sqlite.MovieReaderWriter); err != nil {
|
||||
if err := linkMovieStudios(ctx, db.Movie); err != nil {
|
||||
return fmt.Errorf("error linking movie studios: %s", err.Error())
|
||||
}
|
||||
|
||||
if err := linkStudiosParent(ctx, sqlite.StudioReaderWriter); err != nil {
|
||||
if err := linkStudiosParent(ctx, db.Studio); err != nil {
|
||||
return fmt.Errorf("error linking studios parent: %s", err.Error())
|
||||
}
|
||||
|
||||
if err := linkTagsParent(ctx, sqlite.TagReaderWriter); err != nil {
|
||||
if err := linkTagsParent(ctx, db.Tag); err != nil {
|
||||
return fmt.Errorf("error linking tags parent: %s", err.Error())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user