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:
WithoutPants
2022-07-13 16:30:54 +10:00
parent 30877c75fb
commit 5495d72849
359 changed files with 43690 additions and 16000 deletions

View File

@@ -80,26 +80,17 @@ func (_m *ImageReaderWriter) CountByGalleryID(ctx context.Context, galleryID int
}
// Create provides a mock function with given fields: ctx, newImage
func (_m *ImageReaderWriter) Create(ctx context.Context, newImage models.Image) (*models.Image, error) {
func (_m *ImageReaderWriter) Create(ctx context.Context, newImage *models.ImageCreateInput) error {
ret := _m.Called(ctx, newImage)
var r0 *models.Image
if rf, ok := ret.Get(0).(func(context.Context, models.Image) *models.Image); ok {
var r0 error
if rf, ok := ret.Get(0).(func(context.Context, *models.ImageCreateInput) error); ok {
r0 = rf(ctx, newImage)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*models.Image)
}
r0 = ret.Error(0)
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, models.Image) error); ok {
r1 = rf(ctx, newImage)
} else {
r1 = ret.Error(1)
}
return r0, r1
return r0
}
// DecrementOCounter provides a mock function with given fields: ctx, id
@@ -161,15 +152,15 @@ func (_m *ImageReaderWriter) Find(ctx context.Context, id int) (*models.Image, e
}
// FindByChecksum provides a mock function with given fields: ctx, checksum
func (_m *ImageReaderWriter) FindByChecksum(ctx context.Context, checksum string) (*models.Image, error) {
func (_m *ImageReaderWriter) FindByChecksum(ctx context.Context, checksum string) ([]*models.Image, error) {
ret := _m.Called(ctx, checksum)
var r0 *models.Image
if rf, ok := ret.Get(0).(func(context.Context, string) *models.Image); ok {
var r0 []*models.Image
if rf, ok := ret.Get(0).(func(context.Context, string) []*models.Image); ok {
r0 = rf(ctx, checksum)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*models.Image)
r0 = ret.Get(0).([]*models.Image)
}
}
@@ -207,15 +198,15 @@ func (_m *ImageReaderWriter) FindByGalleryID(ctx context.Context, galleryID int)
}
// FindByPath provides a mock function with given fields: ctx, path
func (_m *ImageReaderWriter) FindByPath(ctx context.Context, path string) (*models.Image, error) {
func (_m *ImageReaderWriter) FindByPath(ctx context.Context, path string) ([]*models.Image, error) {
ret := _m.Called(ctx, path)
var r0 *models.Image
if rf, ok := ret.Get(0).(func(context.Context, string) *models.Image); ok {
var r0 []*models.Image
if rf, ok := ret.Get(0).(func(context.Context, string) []*models.Image); ok {
r0 = rf(ctx, path)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*models.Image)
r0 = ret.Get(0).([]*models.Image)
}
}
@@ -252,75 +243,6 @@ func (_m *ImageReaderWriter) FindMany(ctx context.Context, ids []int) ([]*models
return r0, r1
}
// GetGalleryIDs provides a mock function with given fields: ctx, imageID
func (_m *ImageReaderWriter) GetGalleryIDs(ctx context.Context, imageID int) ([]int, error) {
ret := _m.Called(ctx, imageID)
var r0 []int
if rf, ok := ret.Get(0).(func(context.Context, int) []int); ok {
r0 = rf(ctx, imageID)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]int)
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, int) error); ok {
r1 = rf(ctx, imageID)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// GetPerformerIDs provides a mock function with given fields: ctx, imageID
func (_m *ImageReaderWriter) GetPerformerIDs(ctx context.Context, imageID int) ([]int, error) {
ret := _m.Called(ctx, imageID)
var r0 []int
if rf, ok := ret.Get(0).(func(context.Context, int) []int); ok {
r0 = rf(ctx, imageID)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]int)
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, int) error); ok {
r1 = rf(ctx, imageID)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// GetTagIDs provides a mock function with given fields: ctx, imageID
func (_m *ImageReaderWriter) GetTagIDs(ctx context.Context, imageID int) ([]int, error) {
ret := _m.Called(ctx, imageID)
var r0 []int
if rf, ok := ret.Get(0).(func(context.Context, int) []int); ok {
r0 = rf(ctx, imageID)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).([]int)
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, int) error); ok {
r1 = rf(ctx, imageID)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// IncrementOCounter provides a mock function with given fields: ctx, id
func (_m *ImageReaderWriter) IncrementOCounter(ctx context.Context, id int) (int, error) {
ret := _m.Called(ctx, id)
@@ -429,12 +351,26 @@ func (_m *ImageReaderWriter) Size(ctx context.Context) (float64, error) {
}
// Update provides a mock function with given fields: ctx, updatedImage
func (_m *ImageReaderWriter) Update(ctx context.Context, updatedImage models.ImagePartial) (*models.Image, error) {
func (_m *ImageReaderWriter) Update(ctx context.Context, updatedImage *models.Image) error {
ret := _m.Called(ctx, updatedImage)
var r0 *models.Image
if rf, ok := ret.Get(0).(func(context.Context, models.ImagePartial) *models.Image); ok {
var r0 error
if rf, ok := ret.Get(0).(func(context.Context, *models.Image) error); ok {
r0 = rf(ctx, updatedImage)
} else {
r0 = ret.Error(0)
}
return r0
}
// UpdatePartial provides a mock function with given fields: ctx, id, partial
func (_m *ImageReaderWriter) UpdatePartial(ctx context.Context, id int, partial models.ImagePartial) (*models.Image, error) {
ret := _m.Called(ctx, id, partial)
var r0 *models.Image
if rf, ok := ret.Get(0).(func(context.Context, int, models.ImagePartial) *models.Image); ok {
r0 = rf(ctx, id, partial)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*models.Image)
@@ -442,76 +378,11 @@ func (_m *ImageReaderWriter) Update(ctx context.Context, updatedImage models.Ima
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, models.ImagePartial) error); ok {
r1 = rf(ctx, updatedImage)
if rf, ok := ret.Get(1).(func(context.Context, int, models.ImagePartial) error); ok {
r1 = rf(ctx, id, partial)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// UpdateFull provides a mock function with given fields: ctx, updatedImage
func (_m *ImageReaderWriter) UpdateFull(ctx context.Context, updatedImage models.Image) (*models.Image, error) {
ret := _m.Called(ctx, updatedImage)
var r0 *models.Image
if rf, ok := ret.Get(0).(func(context.Context, models.Image) *models.Image); ok {
r0 = rf(ctx, updatedImage)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*models.Image)
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, models.Image) error); ok {
r1 = rf(ctx, updatedImage)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// UpdateGalleries provides a mock function with given fields: ctx, imageID, galleryIDs
func (_m *ImageReaderWriter) UpdateGalleries(ctx context.Context, imageID int, galleryIDs []int) error {
ret := _m.Called(ctx, imageID, galleryIDs)
var r0 error
if rf, ok := ret.Get(0).(func(context.Context, int, []int) error); ok {
r0 = rf(ctx, imageID, galleryIDs)
} else {
r0 = ret.Error(0)
}
return r0
}
// UpdatePerformers provides a mock function with given fields: ctx, imageID, performerIDs
func (_m *ImageReaderWriter) UpdatePerformers(ctx context.Context, imageID int, performerIDs []int) error {
ret := _m.Called(ctx, imageID, performerIDs)
var r0 error
if rf, ok := ret.Get(0).(func(context.Context, int, []int) error); ok {
r0 = rf(ctx, imageID, performerIDs)
} else {
r0 = ret.Error(0)
}
return r0
}
// UpdateTags provides a mock function with given fields: ctx, imageID, tagIDs
func (_m *ImageReaderWriter) UpdateTags(ctx context.Context, imageID int, tagIDs []int) error {
ret := _m.Called(ctx, imageID, tagIDs)
var r0 error
if rf, ok := ret.Get(0).(func(context.Context, int, []int) error); ok {
r0 = rf(ctx, imageID, tagIDs)
} else {
r0 = ret.Error(0)
}
return r0
}