diff --git a/internal/api/resolver_query_find_gallery.go b/internal/api/resolver_query_find_gallery.go
index e8d47d70b..43a71f4d9 100644
--- a/internal/api/resolver_query_find_gallery.go
+++ b/internal/api/resolver_query_find_gallery.go
@@ -2,6 +2,8 @@ package api
import (
"context"
+ "database/sql"
+ "errors"
"strconv"
"github.com/stashapp/stash/pkg/models"
@@ -16,7 +18,7 @@ func (r *queryResolver) FindGallery(ctx context.Context, id string) (ret *models
if err := r.withReadTxn(ctx, func(ctx context.Context) error {
ret, err = r.repository.Gallery.Find(ctx, idInt)
return err
- }); err != nil {
+ }); err != nil && !errors.Is(err, sql.ErrNoRows) {
return nil, err
}
diff --git a/internal/api/resolver_query_find_image.go b/internal/api/resolver_query_find_image.go
index 6468ba9f3..360f4fff9 100644
--- a/internal/api/resolver_query_find_image.go
+++ b/internal/api/resolver_query_find_image.go
@@ -2,6 +2,8 @@ package api
import (
"context"
+ "database/sql"
+ "errors"
"strconv"
"github.com/99designs/gqlgen/graphql"
@@ -23,7 +25,7 @@ func (r *queryResolver) FindImage(ctx context.Context, id *string, checksum *str
}
image, err = qb.Find(ctx, idInt)
- if err != nil {
+ if err != nil && !errors.Is(err, sql.ErrNoRows) {
return err
}
} else if checksum != nil {
diff --git a/internal/api/resolver_query_find_movie.go b/internal/api/resolver_query_find_movie.go
index a7e72dbdc..a728089cc 100644
--- a/internal/api/resolver_query_find_movie.go
+++ b/internal/api/resolver_query_find_movie.go
@@ -2,6 +2,8 @@ package api
import (
"context"
+ "database/sql"
+ "errors"
"strconv"
"github.com/stashapp/stash/pkg/models"
@@ -16,7 +18,7 @@ func (r *queryResolver) FindMovie(ctx context.Context, id string) (ret *models.M
if err := r.withReadTxn(ctx, func(ctx context.Context) error {
ret, err = r.repository.Movie.Find(ctx, idInt)
return err
- }); err != nil {
+ }); err != nil && !errors.Is(err, sql.ErrNoRows) {
return nil, err
}
@@ -34,7 +36,6 @@ func (r *queryResolver) FindMovies(ctx context.Context, movieFilter *models.Movi
Count: total,
Movies: movies,
}
-
return nil
}); err != nil {
return nil, err
diff --git a/internal/api/resolver_query_find_performer.go b/internal/api/resolver_query_find_performer.go
index 437ac8fcf..b94d67e94 100644
--- a/internal/api/resolver_query_find_performer.go
+++ b/internal/api/resolver_query_find_performer.go
@@ -2,6 +2,8 @@ package api
import (
"context"
+ "database/sql"
+ "errors"
"strconv"
"github.com/stashapp/stash/pkg/models"
@@ -16,7 +18,7 @@ func (r *queryResolver) FindPerformer(ctx context.Context, id string) (ret *mode
if err := r.withReadTxn(ctx, func(ctx context.Context) error {
ret, err = r.repository.Performer.Find(ctx, idInt)
return err
- }); err != nil {
+ }); err != nil && !errors.Is(err, sql.ErrNoRows) {
return nil, err
}
diff --git a/internal/api/resolver_query_find_saved_filter.go b/internal/api/resolver_query_find_saved_filter.go
index 4f196fd65..6098decea 100644
--- a/internal/api/resolver_query_find_saved_filter.go
+++ b/internal/api/resolver_query_find_saved_filter.go
@@ -2,6 +2,8 @@ package api
import (
"context"
+ "database/sql"
+ "errors"
"strconv"
"github.com/stashapp/stash/pkg/models"
@@ -16,7 +18,7 @@ func (r *queryResolver) FindSavedFilter(ctx context.Context, id string) (ret *mo
if err := r.withReadTxn(ctx, func(ctx context.Context) error {
ret, err = r.repository.SavedFilter.Find(ctx, idInt)
return err
- }); err != nil {
+ }); err != nil && !errors.Is(err, sql.ErrNoRows) {
return nil, err
}
return ret, err
@@ -40,7 +42,7 @@ func (r *queryResolver) FindDefaultFilter(ctx context.Context, mode models.Filte
if err := r.withReadTxn(ctx, func(ctx context.Context) error {
ret, err = r.repository.SavedFilter.FindDefault(ctx, mode)
return err
- }); err != nil {
+ }); err != nil && !errors.Is(err, sql.ErrNoRows) {
return nil, err
}
return ret, err
diff --git a/internal/api/resolver_query_find_scene.go b/internal/api/resolver_query_find_scene.go
index 95519cd49..fa322d804 100644
--- a/internal/api/resolver_query_find_scene.go
+++ b/internal/api/resolver_query_find_scene.go
@@ -2,6 +2,8 @@ package api
import (
"context"
+ "database/sql"
+ "errors"
"strconv"
"github.com/99designs/gqlgen/graphql"
@@ -21,7 +23,7 @@ func (r *queryResolver) FindScene(ctx context.Context, id *string, checksum *str
return err
}
scene, err = qb.Find(ctx, idInt)
- if err != nil {
+ if err != nil && !errors.Is(err, sql.ErrNoRows) {
return err
}
} else if checksum != nil {
diff --git a/internal/api/resolver_query_find_studio.go b/internal/api/resolver_query_find_studio.go
index 51cac6208..3f4260bce 100644
--- a/internal/api/resolver_query_find_studio.go
+++ b/internal/api/resolver_query_find_studio.go
@@ -2,6 +2,8 @@ package api
import (
"context"
+ "database/sql"
+ "errors"
"strconv"
"github.com/stashapp/stash/pkg/models"
@@ -17,7 +19,7 @@ func (r *queryResolver) FindStudio(ctx context.Context, id string) (ret *models.
var err error
ret, err = r.repository.Studio.Find(ctx, idInt)
return err
- }); err != nil {
+ }); err != nil && !errors.Is(err, sql.ErrNoRows) {
return nil, err
}
diff --git a/internal/api/resolver_query_find_tag.go b/internal/api/resolver_query_find_tag.go
index fd4b04ad2..9ea16525a 100644
--- a/internal/api/resolver_query_find_tag.go
+++ b/internal/api/resolver_query_find_tag.go
@@ -2,6 +2,8 @@ package api
import (
"context"
+ "database/sql"
+ "errors"
"strconv"
"github.com/stashapp/stash/pkg/models"
@@ -16,7 +18,7 @@ func (r *queryResolver) FindTag(ctx context.Context, id string) (ret *models.Tag
if err := r.withReadTxn(ctx, func(ctx context.Context) error {
ret, err = r.repository.Tag.Find(ctx, idInt)
return err
- }); err != nil {
+ }); err != nil && !errors.Is(err, sql.ErrNoRows) {
return nil, err
}
diff --git a/ui/v2.5/src/components/Scenes/SceneDetails/Scene.tsx b/ui/v2.5/src/components/Scenes/SceneDetails/Scene.tsx
index 1e7a8163f..d86973815 100644
--- a/ui/v2.5/src/components/Scenes/SceneDetails/Scene.tsx
+++ b/ui/v2.5/src/components/Scenes/SceneDetails/Scene.tsx
@@ -24,7 +24,12 @@ import {
queryFindScenesByID,
} from "src/core/StashService";
-import Icon from "src/components/Shared/Icon";
+import {
+ ErrorMessage,
+ LoadingIndicator,
+ Icon,
+ Counter,
+} from "src/components/Shared";
import { useToast } from "src/hooks";
import SceneQueue, { QueuedScene } from "src/models/sceneQueue";
import { ListFilterModel } from "src/models/list-filter/filter";
@@ -58,7 +63,6 @@ const DeleteScenesDialog = lazy(() => import("../DeleteScenesDialog"));
const GenerateDialog = lazy(() => import("../../Dialogs/GenerateDialog"));
const SceneVideoFilterPanel = lazy(() => import("./SceneVideoFilterPanel"));
import { objectPath, objectTitle } from "src/core/files";
-import { Counter } from "src/components/Shared";
interface IProps {
scene: GQL.SceneDataFragment;
@@ -514,7 +518,7 @@ const SceneLoader: React.FC = () => {
const location = useLocation();
const history = useHistory();
const { configuration } = useContext(ConfigurationContext);
- const { data, loading } = useFindScene(id ?? "");
+ const { data, loading, error } = useFindScene(id ?? "");
const queryParams = useMemo(
() => queryString.parse(location.search, { decode: false }),
@@ -728,32 +732,32 @@ const SceneLoader: React.FC = () => {
}
}
+ if (loading) return