mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 04:14:39 +03:00
Add related object filter criteria to various filter types in graphql schema (#4861)
* Move filter criterion handlers into separate file * Add related filters for image filter * Add related filters for scene filter * Add related filters to gallery filter * Add related filters to movie filter * Add related filters to performer filter * Add related filters to studio filter * Add related filters to tag filter * Add scene filter to scene marker filter
This commit is contained in:
@@ -61,7 +61,7 @@ func (e *MismatchedSchemaVersionError) Error() string {
|
||||
return fmt.Sprintf("schema version %d is incompatible with required schema version %d", e.CurrentSchemaVersion, e.RequiredSchemaVersion)
|
||||
}
|
||||
|
||||
type Database struct {
|
||||
type storeRepository struct {
|
||||
Blobs *BlobStore
|
||||
File *FileStore
|
||||
Folder *FolderStore
|
||||
@@ -75,6 +75,10 @@ type Database struct {
|
||||
Studio *StudioStore
|
||||
Tag *TagStore
|
||||
Movie *MovieStore
|
||||
}
|
||||
|
||||
type Database struct {
|
||||
*storeRepository
|
||||
|
||||
db *sqlx.DB
|
||||
dbPath string
|
||||
@@ -87,23 +91,32 @@ type Database struct {
|
||||
func NewDatabase() *Database {
|
||||
fileStore := NewFileStore()
|
||||
folderStore := NewFolderStore()
|
||||
galleryStore := NewGalleryStore(fileStore, folderStore)
|
||||
blobStore := NewBlobStore(BlobStoreOptions{})
|
||||
performerStore := NewPerformerStore(blobStore)
|
||||
studioStore := NewStudioStore(blobStore)
|
||||
tagStore := NewTagStore(blobStore)
|
||||
|
||||
ret := &Database{
|
||||
r := &storeRepository{}
|
||||
*r = storeRepository{
|
||||
Blobs: blobStore,
|
||||
File: fileStore,
|
||||
Folder: folderStore,
|
||||
Scene: NewSceneStore(fileStore, blobStore),
|
||||
Scene: NewSceneStore(r, blobStore),
|
||||
SceneMarker: NewSceneMarkerStore(),
|
||||
Image: NewImageStore(fileStore),
|
||||
Gallery: NewGalleryStore(fileStore, folderStore),
|
||||
Image: NewImageStore(r),
|
||||
Gallery: galleryStore,
|
||||
GalleryChapter: NewGalleryChapterStore(),
|
||||
Performer: NewPerformerStore(blobStore),
|
||||
Studio: NewStudioStore(blobStore),
|
||||
Tag: NewTagStore(blobStore),
|
||||
Performer: performerStore,
|
||||
Studio: studioStore,
|
||||
Tag: tagStore,
|
||||
Movie: NewMovieStore(blobStore),
|
||||
SavedFilter: NewSavedFilterStore(),
|
||||
lockChan: make(chan struct{}, 1),
|
||||
}
|
||||
|
||||
ret := &Database{
|
||||
storeRepository: r,
|
||||
lockChan: make(chan struct{}, 1),
|
||||
}
|
||||
|
||||
return ret
|
||||
@@ -370,7 +383,7 @@ func (db *Database) Analyze(ctx context.Context) error {
|
||||
}
|
||||
|
||||
func (db *Database) ExecSQL(ctx context.Context, query string, args []interface{}) (*int64, *int64, error) {
|
||||
wrapper := dbWrapper{}
|
||||
wrapper := dbWrapperType{}
|
||||
|
||||
result, err := wrapper.Exec(ctx, query, args...)
|
||||
if err != nil {
|
||||
@@ -393,7 +406,7 @@ func (db *Database) ExecSQL(ctx context.Context, query string, args []interface{
|
||||
}
|
||||
|
||||
func (db *Database) QuerySQL(ctx context.Context, query string, args []interface{}) ([]string, [][]interface{}, error) {
|
||||
wrapper := dbWrapper{}
|
||||
wrapper := dbWrapperType{}
|
||||
|
||||
rows, err := wrapper.QueryxContext(ctx, query, args...)
|
||||
if err != nil && !errors.Is(err, sql.ErrNoRows) {
|
||||
|
||||
Reference in New Issue
Block a user