Movie select overhaul (#4563)

* Add ids to findMovies input
* Use ids for other find interfaces
* Update client side
* Fix gallery select function
* Replace movie select
* Re-add creatable
* Overhaul movie table
* Remove and deprecated unused code
This commit is contained in:
WithoutPants
2024-02-19 10:25:08 +11:00
committed by GitHub
parent e7f610ce18
commit e231812203
27 changed files with 696 additions and 437 deletions

View File

@@ -73,26 +73,6 @@ function evictTypeFields(
}
}
// Appends obj to the cached result of the given query.
// Use to append objects to "All*" queries in "Create" mutations.
function appendObject(
cache: ApolloCache<unknown>,
obj: StoreObject,
query: DocumentNode
) {
const field = getQueryDefinition(query).selectionSet.selections[0];
if (!isField(field)) return;
const keyName = field.name.value;
cache.modify({
fields: {
[keyName]: (value, { toReference }) => {
return [...(value as unknown[]), toReference(obj)];
},
},
});
}
// Deletes obj from the cache, and sets the
// cached result of the given query to null.
// Use with "Destroy" mutations.
@@ -199,7 +179,22 @@ export const queryFindMovies = (filter: ListFilterModel) =>
},
});
export const useAllMoviesForFilter = () => GQL.useAllMoviesForFilterQuery();
export const queryFindMoviesByIDForSelect = (movieIDs: string[]) =>
client.query<GQL.FindMoviesForSelectQuery>({
query: GQL.FindMoviesForSelectDocument,
variables: {
ids: movieIDs,
},
});
export const queryFindMoviesForSelect = (filter: ListFilterModel) =>
client.query<GQL.FindMoviesForSelectQuery>({
query: GQL.FindMoviesForSelectDocument,
variables: {
filter: filter.makeFindFilter(),
movie_filter: filter.makeFilter(),
},
});
export const useFindSceneMarkers = (filter?: ListFilterModel) =>
GQL.useFindSceneMarkersQuery({
@@ -244,7 +239,16 @@ export const queryFindGalleries = (filter: ListFilterModel) =>
},
});
export const queryFindGalleriesByIDForSelect = (galleryIDs: number[]) =>
export const queryFindGalleriesForSelect = (filter: ListFilterModel) =>
client.query<GQL.FindGalleriesForSelectQuery>({
query: GQL.FindGalleriesForSelectDocument,
variables: {
filter: filter.makeFindFilter(),
gallery_filter: filter.makeFilter(),
},
});
export const queryFindGalleriesByIDForSelect = (galleryIDs: string[]) =>
client.query<GQL.FindGalleriesForSelectQuery>({
query: GQL.FindGalleriesForSelectDocument,
variables: {
@@ -281,11 +285,11 @@ export const queryFindPerformers = (filter: ListFilterModel) =>
},
});
export const queryFindPerformersByIDForSelect = (performerIDs: number[]) =>
export const queryFindPerformersByIDForSelect = (performerIDs: string[]) =>
client.query<GQL.FindPerformersForSelectQuery>({
query: GQL.FindPerformersForSelectDocument,
variables: {
performer_ids: performerIDs,
ids: performerIDs,
},
});
@@ -327,7 +331,7 @@ export const queryFindStudios = (filter: ListFilterModel) =>
},
});
export const queryFindStudiosByIDForSelect = (studioIDs: number[]) =>
export const queryFindStudiosByIDForSelect = (studioIDs: string[]) =>
client.query<GQL.FindStudiosForSelectQuery>({
query: GQL.FindStudiosForSelectDocument,
variables: {
@@ -367,7 +371,7 @@ export const queryFindTags = (filter: ListFilterModel) =>
},
});
export const queryFindTagsByIDForSelect = (tagIDs: number[]) =>
export const queryFindTagsByIDForSelect = (tagIDs: string[]) =>
client.query<GQL.FindTagsForSelectQuery>({
query: GQL.FindTagsForSelectDocument,
variables: {
@@ -1072,6 +1076,7 @@ export const mutateImageSetPrimaryFile = (id: string, fileID: string) =>
});
const movieMutationImpactedTypeFields = {
Performer: ["movie_count"],
Studio: ["movie_count"],
};
@@ -1085,10 +1090,8 @@ export const useMovieCreate = () =>
const movie = result.data?.movieCreate;
if (!movie) return;
appendObject(cache, movie, GQL.AllMoviesForFilterDocument);
// update stats
updateStats(cache, "studio_count", 1);
updateStats(cache, "movie_count", 1);
evictTypeFields(cache, movieMutationImpactedTypeFields);
evictQueries(cache, movieMutationImpactedQueries);