stash/pkg/models/repository_image.go
DingDongSoLong4 c364346a59
Model refactor (#3915)
* Add mockery config file
* Move basic file/folder structs to models
* Fix hack due to import loop
* Move file interfaces to models
* Move folder interfaces to models
* Move scene interfaces to models
* Move scene marker interfaces to models
* Move image interfaces to models
* Move gallery interfaces to models
* Move gallery chapter interfaces to models
* Move studio interfaces to models
* Move movie interfaces to models
* Move performer interfaces to models
* Move tag interfaces to models
* Move autotag interfaces to models
* Regenerate mocks
2023-09-01 10:39:29 +10:00

92 lines
2.8 KiB
Go

package models
import "context"
// ImageGetter provides methods to get images by ID.
type ImageGetter interface {
// TODO - rename this to Find and remove existing method
FindMany(ctx context.Context, ids []int) ([]*Image, error)
Find(ctx context.Context, id int) (*Image, error)
}
// ImageFinder provides methods to find images.
type ImageFinder interface {
ImageGetter
FindByFingerprints(ctx context.Context, fp []Fingerprint) ([]*Image, error)
FindByChecksum(ctx context.Context, checksum string) ([]*Image, error)
FindByFileID(ctx context.Context, fileID FileID) ([]*Image, error)
FindByFolderID(ctx context.Context, fileID FolderID) ([]*Image, error)
FindByZipFileID(ctx context.Context, zipFileID FileID) ([]*Image, error)
FindByGalleryID(ctx context.Context, galleryID int) ([]*Image, error)
}
// ImageQueryer provides methods to query images.
type ImageQueryer interface {
Query(ctx context.Context, options ImageQueryOptions) (*ImageQueryResult, error)
QueryCount(ctx context.Context, imageFilter *ImageFilterType, findFilter *FindFilterType) (int, error)
}
// ImageCounter provides methods to count images.
type ImageCounter interface {
Count(ctx context.Context) (int, error)
CountByFileID(ctx context.Context, fileID FileID) (int, error)
CountByGalleryID(ctx context.Context, galleryID int) (int, error)
OCountByPerformerID(ctx context.Context, performerID int) (int, error)
}
// ImageCreator provides methods to create images.
type ImageCreator interface {
Create(ctx context.Context, newImage *ImageCreateInput) error
}
// ImageUpdater provides methods to update images.
type ImageUpdater interface {
Update(ctx context.Context, updatedImage *Image) error
UpdatePartial(ctx context.Context, id int, partial ImagePartial) (*Image, error)
UpdatePerformers(ctx context.Context, imageID int, performerIDs []int) error
UpdateTags(ctx context.Context, imageID int, tagIDs []int) error
}
// ImageDestroyer provides methods to destroy images.
type ImageDestroyer interface {
Destroy(ctx context.Context, id int) error
}
type ImageCreatorUpdater interface {
ImageCreator
ImageUpdater
}
// ImageReader provides all methods to read images.
type ImageReader interface {
ImageFinder
ImageQueryer
ImageCounter
FileIDLoader
GalleryIDLoader
PerformerIDLoader
TagIDLoader
FileLoader
All(ctx context.Context) ([]*Image, error)
Size(ctx context.Context) (float64, error)
}
// ImageWriter provides all methods to modify images.
type ImageWriter interface {
ImageCreator
ImageUpdater
ImageDestroyer
AddFileID(ctx context.Context, id int, fileID FileID) error
IncrementOCounter(ctx context.Context, id int) (int, error)
DecrementOCounter(ctx context.Context, id int) (int, error)
ResetOCounter(ctx context.Context, id int) (int, error)
}
// ImageReaderWriter provides all image methods.
type ImageReaderWriter interface {
ImageReader
ImageWriter
}