gitscope
← marzneshin / nightly / dashboard/src/libs/entity-table/hooks/use-entity-query.ts
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/libs/entity-table/hooks/use-entity-query.ts · TypeScript
Blame Raw
 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>>