1
2export interface PaginatedEntityQueryProps {
3 page: number;
4 size: number;
5}
6
7export type FilteredEntityType = {
8 [key: string]: string | undefined;
9}
10
11export interface SortedEntityQueryProps {
12 sortBy: string
13 desc: boolean
14}
15
16interface FiltersEntityQueryProps {
17 filters: FilteredEntityType;
18}
19
20export type UseEntityQueryProps = Partial<FiltersEntityQueryProps> & PaginatedEntityQueryProps & Partial<SortedEntityQueryProps>
21
22export type EntityName = string;
23export type ParentEntityName = string;
24export type EntityId = number | string | undefined;
25export type PrimaryFilter = string;
26
27export type QueryKey =
28 [EntityName, PaginatedEntityQueryProps, PrimaryFilter, SortedEntityQueryProps, FiltersEntityQueryProps]
29export type DoubleEntityQueryKey =
30 [EntityName, EntityId, PaginatedEntityQueryProps, PrimaryFilter?, SortedEntityQueryProps?, FiltersEntityQueryProps?]
31
32export type SelectableQueryKey =
33 [ParentEntityName, EntityId, EntityName, PaginatedEntityQueryProps, PrimaryFilter, SortedEntityQueryProps, FiltersEntityQueryProps]
34
35export type SidebarQueryKey =
36 [EntityName, EntityId, EntityName, PaginatedEntityQueryProps, PrimaryFilter, SortedEntityQueryProps, FiltersEntityQueryProps]
37
38export interface QueryKeyType<QT> {
39 queryKey: QT
40}
41
42export type EntityQueryKeyType = QueryKeyType<QueryKey>
43export type DoubleEntityQueryKeyType = QueryKeyType<DoubleEntityQueryKey>
44export type SelectableEntityQueryKeyType = QueryKeyType<SelectableQueryKey>
45export type EntitySidebarQueryKeyType = QueryKeyType<SidebarQueryKey>
46
47interface FetchEntityResult<T> {
48 pageCount: number
49 entities: T[]
50}
51
52export type FetchEntityReturn<T> = Promise<FetchEntityResult<T>>