package api import ( "context" "github.com/stashapp/stash/internal/api/loaders" "github.com/stashapp/stash/internal/api/urlbuilders" "github.com/stashapp/stash/pkg/models" ) func (r *movieResolver) Date(ctx context.Context, obj *models.Movie) (*string, error) { if obj.Date != nil { result := obj.Date.String() return &result, nil } return nil, nil } func (r *movieResolver) Rating(ctx context.Context, obj *models.Movie) (*int, error) { if obj.Rating != nil { rating := models.Rating100To5(*obj.Rating) return &rating, nil } return nil, nil } func (r *movieResolver) Rating100(ctx context.Context, obj *models.Movie) (*int, error) { return obj.Rating, nil } func (r *movieResolver) Studio(ctx context.Context, obj *models.Movie) (ret *models.Studio, err error) { if obj.StudioID == nil { return nil, nil } return loaders.From(ctx).StudioByID.Load(*obj.StudioID) } func (r *movieResolver) FrontImagePath(ctx context.Context, obj *models.Movie) (*string, error) { var hasImage bool if err := r.withReadTxn(ctx, func(ctx context.Context) error { var err error hasImage, err = r.repository.Movie.HasFrontImage(ctx, obj.ID) return err }); err != nil { return nil, err } baseURL, _ := ctx.Value(BaseURLCtxKey).(string) imagePath := urlbuilders.NewMovieURLBuilder(baseURL, obj).GetMovieFrontImageURL(hasImage) return &imagePath, nil } func (r *movieResolver) BackImagePath(ctx context.Context, obj *models.Movie) (*string, error) { var hasImage bool if err := r.withReadTxn(ctx, func(ctx context.Context) error { var err error hasImage, err = r.repository.Movie.HasBackImage(ctx, obj.ID) return err }); err != nil { return nil, err } // don't return anything if there is no back image if !hasImage { return nil, nil } baseURL, _ := ctx.Value(BaseURLCtxKey).(string) imagePath := urlbuilders.NewMovieURLBuilder(baseURL, obj).GetMovieBackImageURL() return &imagePath, nil } func (r *movieResolver) SceneCount(ctx context.Context, obj *models.Movie) (ret *int, err error) { var res int if err := r.withReadTxn(ctx, func(ctx context.Context) error { res, err = r.repository.Scene.CountByMovieID(ctx, obj.ID) return err }); err != nil { return nil, err } return &res, err } func (r *movieResolver) Scenes(ctx context.Context, obj *models.Movie) (ret []*models.Scene, err error) { if err := r.withReadTxn(ctx, func(ctx context.Context) error { var err error ret, err = r.repository.Scene.FindByMovieID(ctx, obj.ID) return err }); err != nil { return nil, err } return ret, nil }