mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 04:44:37 +03:00
File storage rewrite (#2676)
* Restructure data layer part 2 (#2599) * Refactor and separate image model * Refactor image query builder * Handle relationships in image query builder * Remove relationship management methods * Refactor gallery model/query builder * Add scenes to gallery model * Convert scene model * Refactor scene models * Remove unused methods * Add unit tests for gallery * Add image tests * Add scene tests * Convert unnecessary scene value pointers to values * Convert unnecessary pointer values to values * Refactor scene partial * Add scene partial tests * Refactor ImagePartial * Add image partial tests * Refactor gallery partial update * Add partial gallery update tests * Use zero/null package for null values * Add files and scan system * Add sqlite implementation for files/folders * Add unit tests for files/folders * Image refactors * Update image data layer * Refactor gallery model and creation * Refactor scene model * Refactor scenes * Don't set title from filename * Allow galleries to freely add/remove images * Add multiple scene file support to graphql and UI * Add multiple file support for images in graphql/UI * Add multiple file for galleries in graphql/UI * Remove use of some deprecated fields * Remove scene path usage * Remove gallery path usage * Remove path from image * Move funscript to video file * Refactor caption detection * Migrate existing data * Add post commit/rollback hook system * Lint. Comment out import/export tests * Add WithDatabase read only wrapper * Prepend tasks to list * Add 32 pre-migration * Add warnings in release and migration notes
This commit is contained in:
@@ -74,12 +74,12 @@ func TestSceneIdentifier_Identify(t *testing.T) {
|
||||
|
||||
mockSceneReaderWriter := &mocks.SceneReaderWriter{}
|
||||
|
||||
mockSceneReaderWriter.On("Update", testCtx, mock.MatchedBy(func(partial models.ScenePartial) bool {
|
||||
return partial.ID != errUpdateID
|
||||
})).Return(nil, nil)
|
||||
mockSceneReaderWriter.On("Update", testCtx, mock.MatchedBy(func(partial models.ScenePartial) bool {
|
||||
return partial.ID == errUpdateID
|
||||
})).Return(nil, errors.New("update error"))
|
||||
mockSceneReaderWriter.On("UpdatePartial", testCtx, mock.MatchedBy(func(id int) bool {
|
||||
return id == errUpdateID
|
||||
}), mock.Anything).Return(nil, errors.New("update error"))
|
||||
mockSceneReaderWriter.On("UpdatePartial", testCtx, mock.MatchedBy(func(id int) bool {
|
||||
return id != errUpdateID
|
||||
}), mock.Anything).Return(nil, nil)
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
@@ -245,26 +245,26 @@ func Test_getFieldOptions(t *testing.T) {
|
||||
func Test_getScenePartial(t *testing.T) {
|
||||
var (
|
||||
originalTitle = "originalTitle"
|
||||
originalDate = "originalDate"
|
||||
originalDate = "2001-01-01"
|
||||
originalDetails = "originalDetails"
|
||||
originalURL = "originalURL"
|
||||
)
|
||||
|
||||
var (
|
||||
scrapedTitle = "scrapedTitle"
|
||||
scrapedDate = "scrapedDate"
|
||||
scrapedDate = "2002-02-02"
|
||||
scrapedDetails = "scrapedDetails"
|
||||
scrapedURL = "scrapedURL"
|
||||
)
|
||||
|
||||
originalDateObj := models.NewDate(originalDate)
|
||||
scrapedDateObj := models.NewDate(scrapedDate)
|
||||
|
||||
originalScene := &models.Scene{
|
||||
Title: models.NullString(originalTitle),
|
||||
Date: models.SQLiteDate{
|
||||
String: originalDate,
|
||||
Valid: true,
|
||||
},
|
||||
Details: models.NullString(originalDetails),
|
||||
URL: models.NullString(originalURL),
|
||||
Title: originalTitle,
|
||||
Date: &originalDateObj,
|
||||
Details: originalDetails,
|
||||
URL: originalURL,
|
||||
}
|
||||
|
||||
organisedScene := *originalScene
|
||||
@@ -273,13 +273,10 @@ func Test_getScenePartial(t *testing.T) {
|
||||
emptyScene := &models.Scene{}
|
||||
|
||||
postPartial := models.ScenePartial{
|
||||
Title: models.NullStringPtr(scrapedTitle),
|
||||
Date: &models.SQLiteDate{
|
||||
String: scrapedDate,
|
||||
Valid: true,
|
||||
},
|
||||
Details: models.NullStringPtr(scrapedDetails),
|
||||
URL: models.NullStringPtr(scrapedURL),
|
||||
Title: models.NewOptionalString(scrapedTitle),
|
||||
Date: models.NewOptionalDate(scrapedDateObj),
|
||||
Details: models.NewOptionalString(scrapedDetails),
|
||||
URL: models.NewOptionalString(scrapedURL),
|
||||
}
|
||||
|
||||
scrapedScene := &scraper.ScrapedScene{
|
||||
@@ -387,7 +384,7 @@ func Test_getScenePartial(t *testing.T) {
|
||||
true,
|
||||
},
|
||||
models.ScenePartial{
|
||||
Organized: &setOrganised,
|
||||
Organized: models.NewOptionalBool(setOrganised),
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user