stash/pkg/models/repository_gallery.go
sezzim 68738bd227
Support for assigning any image from a gallery as the cover (#5053)
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
2024-08-29 11:24:52 +10:00

94 lines
3.1 KiB
Go

package models
import "context"
// GalleryGetter provides methods to get galleries by ID.
type GalleryGetter interface {
// TODO - rename this to Find and remove existing method
FindMany(ctx context.Context, ids []int) ([]*Gallery, error)
Find(ctx context.Context, id int) (*Gallery, error)
}
// GalleryFinder provides methods to find galleries.
type GalleryFinder interface {
GalleryGetter
FindByFingerprints(ctx context.Context, fp []Fingerprint) ([]*Gallery, error)
FindByChecksum(ctx context.Context, checksum string) ([]*Gallery, error)
FindByChecksums(ctx context.Context, checksums []string) ([]*Gallery, error)
FindByPath(ctx context.Context, path string) ([]*Gallery, error)
FindByFileID(ctx context.Context, fileID FileID) ([]*Gallery, error)
FindByFolderID(ctx context.Context, folderID FolderID) ([]*Gallery, error)
FindBySceneID(ctx context.Context, sceneID int) ([]*Gallery, error)
FindByImageID(ctx context.Context, imageID int) ([]*Gallery, error)
FindUserGalleryByTitle(ctx context.Context, title string) ([]*Gallery, error)
}
// GalleryQueryer provides methods to query galleries.
type GalleryQueryer interface {
Query(ctx context.Context, galleryFilter *GalleryFilterType, findFilter *FindFilterType) ([]*Gallery, int, error)
QueryCount(ctx context.Context, galleryFilter *GalleryFilterType, findFilter *FindFilterType) (int, error)
}
// GalleryCounter provides methods to count galleries.
type GalleryCounter interface {
Count(ctx context.Context) (int, error)
CountByFileID(ctx context.Context, fileID FileID) (int, error)
}
// GalleryCreator provides methods to create galleries.
type GalleryCreator interface {
Create(ctx context.Context, newGallery *Gallery, fileIDs []FileID) error
}
// GalleryUpdater provides methods to update galleries.
type GalleryUpdater interface {
Update(ctx context.Context, updatedGallery *Gallery) error
UpdatePartial(ctx context.Context, id int, updatedGallery GalleryPartial) (*Gallery, error)
UpdateImages(ctx context.Context, galleryID int, imageIDs []int) error
}
// GalleryDestroyer provides methods to destroy galleries.
type GalleryDestroyer interface {
Destroy(ctx context.Context, id int) error
}
type GalleryCreatorUpdater interface {
GalleryCreator
GalleryUpdater
}
// GalleryReader provides all methods to read galleries.
type GalleryReader interface {
GalleryFinder
GalleryQueryer
GalleryCounter
URLLoader
FileIDLoader
ImageIDLoader
SceneIDLoader
PerformerIDLoader
TagIDLoader
FileLoader
All(ctx context.Context) ([]*Gallery, error)
}
// GalleryWriter provides all methods to modify galleries.
type GalleryWriter interface {
GalleryCreator
GalleryUpdater
GalleryDestroyer
AddFileID(ctx context.Context, id int, fileID FileID) error
AddImages(ctx context.Context, galleryID int, imageIDs ...int) error
RemoveImages(ctx context.Context, galleryID int, imageIDs ...int) error
SetCover(ctx context.Context, galleryID int, coverImageID int) error
ResetCover(ctx context.Context, galleryID int) error
}
// GalleryReaderWriter provides all gallery methods.
type GalleryReaderWriter interface {
GalleryReader
GalleryWriter
}