Include subsidiary studios/tags in tab badge counters (#3816)

* Add '_all' counts
* Use '_all' counts in UI
* Make other counts non-nullable
* Hide tab counts if zero
* Add resolver parameter
This commit is contained in:
DingDongSoLong4
2023-06-16 02:46:14 +02:00
committed by GitHub
parent 47c3e855c8
commit f65e87773c
32 changed files with 453 additions and 193 deletions

View File

@@ -8,7 +8,9 @@ import (
"github.com/stashapp/stash/pkg/gallery"
"github.com/stashapp/stash/pkg/image"
"github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/movie"
"github.com/stashapp/stash/pkg/performer"
"github.com/stashapp/stash/pkg/scene"
)
func (r *studioResolver) ImagePath(ctx context.Context, obj *models.Studio) (*string, error) {
@@ -37,52 +39,59 @@ func (r *studioResolver) Aliases(ctx context.Context, obj *models.Studio) (ret [
return ret, err
}
func (r *studioResolver) SceneCount(ctx context.Context, obj *models.Studio) (ret *int, err error) {
var res int
func (r *studioResolver) SceneCount(ctx context.Context, obj *models.Studio, depth *int) (ret int, err error) {
if err := r.withReadTxn(ctx, func(ctx context.Context) error {
res, err = r.repository.Scene.CountByStudioID(ctx, obj.ID)
ret, err = scene.CountByStudioID(ctx, r.repository.Scene, obj.ID, depth)
return err
}); err != nil {
return nil, err
return 0, err
}
return &res, err
return ret, nil
}
func (r *studioResolver) ImageCount(ctx context.Context, obj *models.Studio) (ret *int, err error) {
var res int
func (r *studioResolver) ImageCount(ctx context.Context, obj *models.Studio, depth *int) (ret int, err error) {
if err := r.withReadTxn(ctx, func(ctx context.Context) error {
res, err = image.CountByStudioID(ctx, r.repository.Image, obj.ID)
ret, err = image.CountByStudioID(ctx, r.repository.Image, obj.ID, depth)
return err
}); err != nil {
return nil, err
return 0, err
}
return &res, nil
return ret, nil
}
func (r *studioResolver) GalleryCount(ctx context.Context, obj *models.Studio) (ret *int, err error) {
var res int
func (r *studioResolver) GalleryCount(ctx context.Context, obj *models.Studio, depth *int) (ret int, err error) {
if err := r.withReadTxn(ctx, func(ctx context.Context) error {
res, err = gallery.CountByStudioID(ctx, r.repository.Gallery, obj.ID)
ret, err = gallery.CountByStudioID(ctx, r.repository.Gallery, obj.ID, depth)
return err
}); err != nil {
return nil, err
return 0, err
}
return &res, nil
return ret, nil
}
func (r *studioResolver) PerformerCount(ctx context.Context, obj *models.Studio) (ret *int, err error) {
var res int
func (r *studioResolver) PerformerCount(ctx context.Context, obj *models.Studio, depth *int) (ret int, err error) {
if err := r.withReadTxn(ctx, func(ctx context.Context) error {
res, err = performer.CountByStudioID(ctx, r.repository.Performer, obj.ID)
ret, err = performer.CountByStudioID(ctx, r.repository.Performer, obj.ID, depth)
return err
}); err != nil {
return nil, err
return 0, err
}
return &res, nil
return ret, nil
}
func (r *studioResolver) MovieCount(ctx context.Context, obj *models.Studio, depth *int) (ret int, err error) {
if err := r.withReadTxn(ctx, func(ctx context.Context) error {
ret, err = movie.CountByStudioID(ctx, r.repository.Movie, obj.ID, depth)
return err
}); err != nil {
return 0, err
}
return ret, nil
}
func (r *studioResolver) ParentStudio(ctx context.Context, obj *models.Studio) (ret *models.Studio, err error) {
@@ -139,15 +148,3 @@ func (r *studioResolver) Movies(ctx context.Context, obj *models.Studio) (ret []
return ret, nil
}
func (r *studioResolver) MovieCount(ctx context.Context, obj *models.Studio) (ret *int, err error) {
var res int
if err := r.withReadTxn(ctx, func(ctx context.Context) error {
res, err = r.repository.Movie.CountByStudioID(ctx, obj.ID)
return err
}); err != nil {
return nil, err
}
return &res, nil
}