react-query-firebase 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -74,5 +74,5 @@
74
74
  "docs:build": "vitepress build docs",
75
75
  "docs:preview": "vitepress preview docs"
76
76
  },
77
- "version": "2.2.0"
77
+ "version": "2.3.0"
78
78
  }
@@ -1,40 +1,82 @@
1
1
  import { FirebaseFirestoreTypes } from "@react-native-firebase/firestore";
2
- type CompositeFilterDocumentData = FirebaseFirestoreTypes.DocumentData;
3
- export type QueryElement<DbModelType extends CompositeFilterDocumentData = CompositeFilterDocumentData> = {
2
+ import { AppModel } from "../../types";
3
+ export type QueryFilterConstraint = FirebaseFirestoreTypes.QueryCompositeFilterConstraint | FirebaseFirestoreTypes.QueryFilterConstraint;
4
+ export type QueryElement<AppModelType extends AppModel = AppModel> = {
4
5
  operator?: "OR" | "AND";
5
6
  children?: QueryElement[];
6
- field?: keyof (DbModelType & {
7
+ field?: keyof (AppModelType & {
7
8
  documentId?: string[];
8
9
  });
9
- value?: DbModelType[keyof DbModelType];
10
+ value?: AppModelType[keyof AppModelType];
10
11
  op?: FirebaseFirestoreTypes.WhereFilterOp;
11
12
  };
12
- export type CompositeFilter<DbModelType extends CompositeFilterDocumentData = CompositeFilterDocumentData> = {
13
+ export type CompositeFilter<AppModelType extends AppModel = AppModel> = {
13
14
  operator: "OR" | "AND";
14
- children: QueryElement<DbModelType & {
15
+ children: QueryElement<AppModelType & {
15
16
  documentId?: string[];
16
17
  }>[];
17
18
  };
18
- export type UseCompositeFilter<DbModelType extends CompositeFilterDocumentData = CompositeFilterDocumentData> = {
19
- query?: CompositeFilter<DbModelType>;
19
+ /**
20
+ * @inline
21
+ */
22
+ export type UseCompositeFilter<AppModelType extends AppModel = AppModel> = {
23
+ query?: CompositeFilter<AppModelType>;
20
24
  };
21
25
  /**
22
- * Constructs a composite query filter based on the provided query structure.
26
+ * Constructs a composite or where query filter based on the provided query structure.
23
27
  * It recursively builds query constraints using logical "or" or "and" operators.
24
28
  *
25
- * @param {QueryElement<DbModelType>} query - The query element or structure to be evaluated and transformed into filter constraints.
26
- * @returns {QueryFieldFilterConstraint | null} A constructed query filter constraint based on the input query, or null if no valid constraints can be derived.
29
+ * @group Utility
30
+ *
31
+ * @param {QueryElement<AppModelType>} query
32
+ *
33
+ * @returns {QueryFilterConstraint | null}
34
+ *
35
+ * @example
36
+ * ```jsx
37
+ * export const MyComponent = () => {
38
+ * const filter = buildCompositeFilter({
39
+ * operator: "AND",
40
+ * children: [
41
+ * {
42
+ * field: "field",
43
+ * value: "value",
44
+ * op: "=="
45
+ * },
46
+ * ...(query ? [query] : [])
47
+ * ]
48
+ * });
49
+ * console.log(filter);
50
+ * };
51
+ * ```
27
52
  */
28
- export declare const buildCompositeFilter: <DbModelType extends CompositeFilterDocumentData = CompositeFilterDocumentData>(query: QueryElement<DbModelType>) => FirebaseFirestoreTypes.QueryFilterConstraint | null;
53
+ export declare const buildCompositeFilter: <AppModelType extends AppModel = AppModel>(query: QueryElement<AppModelType>) => QueryFilterConstraint | null;
29
54
  /**
30
- * A custom hook that generates a composite filter for database queries, using the provided query configuration.
31
- * It applies either an 'OR' or 'AND' logical operation based on the type specified in the query.
55
+ * A custom hook that constructs a composite or where query filter based on the provided query structure.
56
+ * It recursively builds query constraints using logical "or" or "and" operators.
57
+ *
58
+ * @group Hook
59
+ *
60
+ * @param {QueryElement<AppModelType>} query
32
61
  *
33
- * @param {Object} query - The query configuration object that contains subqueries and a type for logical combination.
34
- * @param {string} query.type - The type of composite operation ('or'/'and').
35
- * @param {Array} query.children - An array of subqueries that will be processed to form the composite filter.
62
+ * @returns {QueryFilterConstraint | null}
36
63
  *
37
- * @returns {(Function|undefined)} A composite query filter constraint function formed by combining subqueries or undefined if there are no valid constraints.
64
+ * @example
65
+ * ```jsx
66
+ * export const MyComponent = () => {
67
+ * const filter = useCompositeFilter({
68
+ * operator: "AND",
69
+ * children: [
70
+ * {
71
+ * field: "field",
72
+ * value: "value",
73
+ * op: "=="
74
+ * },
75
+ * ...(query ? [query] : [])
76
+ * ]
77
+ * });
78
+ * console.log(filter);
79
+ * };
80
+ * ```
38
81
  */
39
- export declare const useCompositeFilter: <DbModelType extends CompositeFilterDocumentData = CompositeFilterDocumentData>({ query }: UseCompositeFilter<DbModelType>) => FirebaseFirestoreTypes.QueryFilterConstraint | undefined;
40
- export {};
82
+ export declare const useCompositeFilter: <AppModelType extends AppModel = AppModel>({ query }: UseCompositeFilter<AppModelType>) => QueryFilterConstraint | undefined;
@@ -1,11 +1,32 @@
1
1
  import firebase, { and, or, where } from "@react-native-firebase/firestore";
2
2
  import { useMemo } from "react";
3
3
  /**
4
- * Constructs a composite query filter based on the provided query structure.
4
+ * Constructs a composite or where query filter based on the provided query structure.
5
5
  * It recursively builds query constraints using logical "or" or "and" operators.
6
6
  *
7
- * @param {QueryElement<DbModelType>} query - The query element or structure to be evaluated and transformed into filter constraints.
8
- * @returns {QueryFieldFilterConstraint | null} A constructed query filter constraint based on the input query, or null if no valid constraints can be derived.
7
+ * @group Utility
8
+ *
9
+ * @param {QueryElement<AppModelType>} query
10
+ *
11
+ * @returns {QueryFilterConstraint | null}
12
+ *
13
+ * @example
14
+ * ```jsx
15
+ * export const MyComponent = () => {
16
+ * const filter = buildCompositeFilter({
17
+ * operator: "AND",
18
+ * children: [
19
+ * {
20
+ * field: "field",
21
+ * value: "value",
22
+ * op: "=="
23
+ * },
24
+ * ...(query ? [query] : [])
25
+ * ]
26
+ * });
27
+ * console.log(filter);
28
+ * };
29
+ * ```
9
30
  */
10
31
  export const buildCompositeFilter = (query) => {
11
32
  if (query.children) {
@@ -24,19 +45,38 @@ export const buildCompositeFilter = (query) => {
24
45
  return null;
25
46
  };
26
47
  /**
27
- * A custom hook that generates a composite filter for database queries, using the provided query configuration.
28
- * It applies either an 'OR' or 'AND' logical operation based on the type specified in the query.
48
+ * A custom hook that constructs a composite or where query filter based on the provided query structure.
49
+ * It recursively builds query constraints using logical "or" or "and" operators.
50
+ *
51
+ * @group Hook
52
+ *
53
+ * @param {QueryElement<AppModelType>} query
29
54
  *
30
- * @param {Object} query - The query configuration object that contains subqueries and a type for logical combination.
31
- * @param {string} query.type - The type of composite operation ('or'/'and').
32
- * @param {Array} query.children - An array of subqueries that will be processed to form the composite filter.
55
+ * @returns {QueryFilterConstraint | null}
33
56
  *
34
- * @returns {(Function|undefined)} A composite query filter constraint function formed by combining subqueries or undefined if there are no valid constraints.
57
+ * @example
58
+ * ```jsx
59
+ * export const MyComponent = () => {
60
+ * const filter = useCompositeFilter({
61
+ * operator: "AND",
62
+ * children: [
63
+ * {
64
+ * field: "field",
65
+ * value: "value",
66
+ * op: "=="
67
+ * },
68
+ * ...(query ? [query] : [])
69
+ * ]
70
+ * });
71
+ * console.log(filter);
72
+ * };
73
+ * ```
35
74
  */
36
75
  export const useCompositeFilter = ({ query }) => {
37
76
  return useMemo(() => {
38
- const queryConstraints = (query?.children?.map?.((subQuery) => buildCompositeFilter(subQuery))
39
- ?.filter)?.((constraint) => !!constraint) ?? [];
77
+ const queryConstraints = query?.children
78
+ ?.map?.((subQuery) => buildCompositeFilter(subQuery))
79
+ ?.filter?.((constraint) => !!constraint) ?? [];
40
80
  if (queryConstraints.length <= 0) {
41
81
  return undefined;
42
82
  }
@@ -1,36 +1,62 @@
1
1
  import firebase, { FirebaseFirestoreTypes, and, or, where } from "@react-native-firebase/firestore";
2
2
  import { useMemo } from "react";
3
+ import { AppModel } from "../../types";
3
4
 
4
- type CompositeFilterDocumentData = FirebaseFirestoreTypes.DocumentData;
5
+ export type QueryFilterConstraint =
6
+ | FirebaseFirestoreTypes.QueryCompositeFilterConstraint
7
+ | FirebaseFirestoreTypes.QueryFilterConstraint;
5
8
 
6
- export type QueryElement<DbModelType extends CompositeFilterDocumentData = CompositeFilterDocumentData> = {
9
+ export type QueryElement<AppModelType extends AppModel = AppModel> = {
7
10
  operator?: "OR" | "AND";
8
11
  children?: QueryElement[];
9
- field?: keyof (DbModelType & { documentId?: string[] });
10
- value?: DbModelType[keyof DbModelType];
12
+ field?: keyof (AppModelType & { documentId?: string[] });
13
+ value?: AppModelType[keyof AppModelType];
11
14
  op?: FirebaseFirestoreTypes.WhereFilterOp;
12
15
  };
13
16
 
14
- export type CompositeFilter<DbModelType extends CompositeFilterDocumentData = CompositeFilterDocumentData> = {
17
+ export type CompositeFilter<AppModelType extends AppModel = AppModel> = {
15
18
  operator: "OR" | "AND";
16
- children: QueryElement<DbModelType & { documentId?: string[] }>[];
19
+ children: QueryElement<AppModelType & { documentId?: string[] }>[];
17
20
  };
18
21
 
19
- export type UseCompositeFilter<DbModelType extends CompositeFilterDocumentData = CompositeFilterDocumentData> = {
20
- query?: CompositeFilter<DbModelType>;
22
+ /**
23
+ * @inline
24
+ */
25
+ export type UseCompositeFilter<AppModelType extends AppModel = AppModel> = {
26
+ query?: CompositeFilter<AppModelType>;
21
27
  };
22
28
 
23
29
  /**
24
- * Constructs a composite query filter based on the provided query structure.
30
+ * Constructs a composite or where query filter based on the provided query structure.
25
31
  * It recursively builds query constraints using logical "or" or "and" operators.
26
32
  *
27
- * @param {QueryElement<DbModelType>} query - The query element or structure to be evaluated and transformed into filter constraints.
28
- * @returns {QueryFieldFilterConstraint | null} A constructed query filter constraint based on the input query, or null if no valid constraints can be derived.
33
+ * @group Utility
34
+ *
35
+ * @param {QueryElement<AppModelType>} query
36
+ *
37
+ * @returns {QueryFilterConstraint | null}
38
+ *
39
+ * @example
40
+ * ```jsx
41
+ * export const MyComponent = () => {
42
+ * const filter = buildCompositeFilter({
43
+ * operator: "AND",
44
+ * children: [
45
+ * {
46
+ * field: "field",
47
+ * value: "value",
48
+ * op: "=="
49
+ * },
50
+ * ...(query ? [query] : [])
51
+ * ]
52
+ * });
53
+ * console.log(filter);
54
+ * };
55
+ * ```
29
56
  */
30
-
31
- export const buildCompositeFilter = <DbModelType extends CompositeFilterDocumentData = CompositeFilterDocumentData>(
32
- query: QueryElement<DbModelType>
33
- ): FirebaseFirestoreTypes.QueryFilterConstraint | null => {
57
+ export const buildCompositeFilter = <AppModelType extends AppModel = AppModel>(
58
+ query: QueryElement<AppModelType>
59
+ ): QueryFilterConstraint | null => {
34
60
  if (query.children) {
35
61
  const queryConstraints = query.children.map(buildCompositeFilter).filter((constraint) => !!constraint);
36
62
 
@@ -57,22 +83,41 @@ export const buildCompositeFilter = <DbModelType extends CompositeFilterDocument
57
83
  };
58
84
 
59
85
  /**
60
- * A custom hook that generates a composite filter for database queries, using the provided query configuration.
61
- * It applies either an 'OR' or 'AND' logical operation based on the type specified in the query.
86
+ * A custom hook that constructs a composite or where query filter based on the provided query structure.
87
+ * It recursively builds query constraints using logical "or" or "and" operators.
88
+ *
89
+ * @group Hook
90
+ *
91
+ * @param {QueryElement<AppModelType>} query
62
92
  *
63
- * @param {Object} query - The query configuration object that contains subqueries and a type for logical combination.
64
- * @param {string} query.type - The type of composite operation ('or'/'and').
65
- * @param {Array} query.children - An array of subqueries that will be processed to form the composite filter.
93
+ * @returns {QueryFilterConstraint | null}
66
94
  *
67
- * @returns {(Function|undefined)} A composite query filter constraint function formed by combining subqueries or undefined if there are no valid constraints.
95
+ * @example
96
+ * ```jsx
97
+ * export const MyComponent = () => {
98
+ * const filter = useCompositeFilter({
99
+ * operator: "AND",
100
+ * children: [
101
+ * {
102
+ * field: "field",
103
+ * value: "value",
104
+ * op: "=="
105
+ * },
106
+ * ...(query ? [query] : [])
107
+ * ]
108
+ * });
109
+ * console.log(filter);
110
+ * };
111
+ * ```
68
112
  */
69
- export const useCompositeFilter = <DbModelType extends CompositeFilterDocumentData = CompositeFilterDocumentData>({
113
+ export const useCompositeFilter = <AppModelType extends AppModel = AppModel>({
70
114
  query
71
- }: UseCompositeFilter<DbModelType>) => {
115
+ }: UseCompositeFilter<AppModelType>): QueryFilterConstraint | undefined => {
72
116
  return useMemo(() => {
73
117
  const queryConstraints =
74
- query?.children?.map?.((subQuery) => buildCompositeFilter(subQuery))
75
- ?.filter<FirebaseFirestoreTypes.QueryFilterConstraint>?.((constraint) => !!constraint) ?? [];
118
+ query?.children
119
+ ?.map?.((subQuery) => buildCompositeFilter(subQuery))
120
+ ?.filter?.((constraint) => !!constraint) ?? [];
76
121
 
77
122
  if (queryConstraints.length <= 0) {
78
123
  return undefined;
@@ -1,23 +1,49 @@
1
1
  import { FirebaseFirestoreTypes, QueryConstraint, QueryNonFilterConstraint } from "@react-native-firebase/firestore";
2
2
  import { UseQueryResult, UseQueryOptions as UseReactQueryOptions } from "@tanstack/react-query";
3
- type UseCountQueryOptions<AppModelType extends FirebaseFirestoreTypes.DocumentData = FirebaseFirestoreTypes.DocumentData> = {
3
+ import { QueryFilterConstraint } from "./useCompositeFilter";
4
+ import { AppModel } from "../../types";
5
+ /**
6
+ * @inline
7
+ */
8
+ type UseCountQueryOptions<AppModelType extends AppModel = AppModel> = {
9
+ /**
10
+ * Reqct-query options that must include queryKey and shall not define queryFn
11
+ */
4
12
  options: Omit<UseReactQueryOptions<number, Error, number>, "queryFn"> & Required<Pick<UseReactQueryOptions<number, Error, number>, "queryKey">>;
13
+ /**
14
+ * Reference to a Firestore collection
15
+ */
5
16
  collectionReference: FirebaseFirestoreTypes.CollectionReference<AppModelType>;
17
+ /**
18
+ * Non composite filter constraints such as limit, order, where
19
+ */
6
20
  queryConstraints?: QueryConstraint[] | QueryNonFilterConstraint[];
7
- compositeFilter?: FirebaseFirestoreTypes.QueryCompositeFilterConstraint;
21
+ /**
22
+ * Composite filter
23
+ */
24
+ compositeFilter?: QueryFilterConstraint;
8
25
  };
9
26
  /**
10
27
  * Executes a query with specified constraints and returns the count of matched documents.
11
28
  *
12
- * This function utilizes React Query to asynchronously fetch the count of documents from a server database
13
- * that match the provided query constraints and an optional composite filter.
29
+ * @group Hook
14
30
  *
15
31
  * @param {UseCountQueryOptions<AppModelType>} options - Configuration options for the query.
16
- * @param {AppModelType extends FirebaseFirestoreTypes.DocumentData = FirebaseFirestoreTypes.DocumentData} [options.options] - Additional options for the React Query.
17
- * @param {unknown} [options.query] - Reference to the query object to be executed.
18
- * @param {unknown[]} [options.queryConstraints=[]] - An array of constraints to apply to the query.
19
- * @param {unknown} [options.compositeFilter] - An optional composite filter to apply to the query.
32
+ *
20
33
  * @returns {UseQueryResult<number>} An object containing the number of documents that match the query.
34
+ *
35
+ * @example
36
+ * ```jsx
37
+ * export const MyComponent = () => {
38
+ * const count = useCountQuery({
39
+ * options: {
40
+ * queryKey: ['key']
41
+ * },
42
+ * collectionReference: collection(),
43
+ * });
44
+ * console.log(count);
45
+ * };
46
+ * ```
21
47
  */
22
- export declare const useCountQuery: <AppModelType extends FirebaseFirestoreTypes.DocumentData = FirebaseFirestoreTypes.DocumentData>({ options, collectionReference, queryConstraints, compositeFilter }: UseCountQueryOptions<AppModelType>) => UseQueryResult<number>;
48
+ export declare const useCountQuery: <AppModelType extends AppModel = AppModel>({ options, collectionReference, queryConstraints, compositeFilter }: UseCountQueryOptions<AppModelType>) => UseQueryResult<number>;
23
49
  export {};
@@ -3,15 +3,24 @@ import { useQuery as useReactQuery } from "@tanstack/react-query";
3
3
  /**
4
4
  * Executes a query with specified constraints and returns the count of matched documents.
5
5
  *
6
- * This function utilizes React Query to asynchronously fetch the count of documents from a server database
7
- * that match the provided query constraints and an optional composite filter.
6
+ * @group Hook
8
7
  *
9
8
  * @param {UseCountQueryOptions<AppModelType>} options - Configuration options for the query.
10
- * @param {AppModelType extends FirebaseFirestoreTypes.DocumentData = FirebaseFirestoreTypes.DocumentData} [options.options] - Additional options for the React Query.
11
- * @param {unknown} [options.query] - Reference to the query object to be executed.
12
- * @param {unknown[]} [options.queryConstraints=[]] - An array of constraints to apply to the query.
13
- * @param {unknown} [options.compositeFilter] - An optional composite filter to apply to the query.
9
+ *
14
10
  * @returns {UseQueryResult<number>} An object containing the number of documents that match the query.
11
+ *
12
+ * @example
13
+ * ```jsx
14
+ * export const MyComponent = () => {
15
+ * const count = useCountQuery({
16
+ * options: {
17
+ * queryKey: ['key']
18
+ * },
19
+ * collectionReference: collection(),
20
+ * });
21
+ * console.log(count);
22
+ * };
23
+ * ```
15
24
  */
16
25
  export const useCountQuery = ({ options, collectionReference, queryConstraints = [], compositeFilter }) => {
17
26
  return useReactQuery({
@@ -11,34 +11,58 @@ import {
11
11
  useQuery as useReactQuery,
12
12
  UseQueryOptions as UseReactQueryOptions
13
13
  } from "@tanstack/react-query";
14
+ import { QueryFilterConstraint } from "./useCompositeFilter";
15
+ import { AppModel } from "../../types";
14
16
 
15
- type UseCountQueryOptions<
16
- AppModelType extends FirebaseFirestoreTypes.DocumentData = FirebaseFirestoreTypes.DocumentData
17
- > = {
17
+ /**
18
+ * @inline
19
+ */
20
+ type UseCountQueryOptions<AppModelType extends AppModel = AppModel> = {
21
+ /**
22
+ * Reqct-query options that must include queryKey and shall not define queryFn
23
+ */
18
24
  options: Omit<UseReactQueryOptions<number, Error, number>, "queryFn"> &
19
25
  Required<Pick<UseReactQueryOptions<number, Error, number>, "queryKey">>;
26
+
27
+ /**
28
+ * Reference to a Firestore collection
29
+ */
20
30
  collectionReference: FirebaseFirestoreTypes.CollectionReference<AppModelType>;
31
+
32
+ /**
33
+ * Non composite filter constraints such as limit, order, where
34
+ */
21
35
  queryConstraints?: QueryConstraint[] | QueryNonFilterConstraint[];
22
- compositeFilter?: FirebaseFirestoreTypes.QueryCompositeFilterConstraint;
36
+
37
+ /**
38
+ * Composite filter
39
+ */
40
+ compositeFilter?: QueryFilterConstraint;
23
41
  };
24
42
 
25
43
  /**
26
44
  * Executes a query with specified constraints and returns the count of matched documents.
27
45
  *
28
- * This function utilizes React Query to asynchronously fetch the count of documents from a server database
29
- * that match the provided query constraints and an optional composite filter.
46
+ * @group Hook
30
47
  *
31
48
  * @param {UseCountQueryOptions<AppModelType>} options - Configuration options for the query.
32
- * @param {AppModelType extends FirebaseFirestoreTypes.DocumentData = FirebaseFirestoreTypes.DocumentData} [options.options] - Additional options for the React Query.
33
- * @param {unknown} [options.query] - Reference to the query object to be executed.
34
- * @param {unknown[]} [options.queryConstraints=[]] - An array of constraints to apply to the query.
35
- * @param {unknown} [options.compositeFilter] - An optional composite filter to apply to the query.
49
+ *
36
50
  * @returns {UseQueryResult<number>} An object containing the number of documents that match the query.
51
+ *
52
+ * @example
53
+ * ```jsx
54
+ * export const MyComponent = () => {
55
+ * const count = useCountQuery({
56
+ * options: {
57
+ * queryKey: ['key']
58
+ * },
59
+ * collectionReference: collection(),
60
+ * });
61
+ * console.log(count);
62
+ * };
63
+ * ```
37
64
  */
38
-
39
- export const useCountQuery = <
40
- AppModelType extends FirebaseFirestoreTypes.DocumentData = FirebaseFirestoreTypes.DocumentData
41
- >({
65
+ export const useCountQuery = <AppModelType extends AppModel = AppModel>({
42
66
  options,
43
67
  collectionReference,
44
68
  queryConstraints = [],
@@ -1,17 +1,49 @@
1
1
  import { FirebaseFirestoreTypes, QueryConstraint, QueryNonFilterConstraint } from "@react-native-firebase/firestore";
2
2
  import { UseInfiniteQueryOptions as UseReactInfiniteQueryOptions, QueryKey, UseInfiniteQueryResult, InfiniteData } from "@tanstack/react-query";
3
- type UseInfiniteQueryOptions<AppModelType extends FirebaseFirestoreTypes.DocumentData = FirebaseFirestoreTypes.DocumentData, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> = {
3
+ import { QueryFilterConstraint } from "./useCompositeFilter";
4
+ import { AppModel } from "../../types";
5
+ /**
6
+ * @inline
7
+ */
8
+ type UseInfiniteQueryOptions<AppModelType extends AppModel = AppModel, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown> = {
9
+ /**
10
+ * Reqct-query options that must include queryKey and shall not define queryFn
11
+ */
4
12
  options: Omit<UseReactInfiniteQueryOptions<AppModelType[], Error, InfiniteData<AppModelType[]>, AppModelType[], TQueryKey, TPageParam>, "queryFn"> & Required<Pick<UseReactInfiniteQueryOptions<AppModelType[], Error, InfiniteData<AppModelType[]>, AppModelType[], TQueryKey, TPageParam>, "queryKey">>;
13
+ /**
14
+ * Reference to a Firestore collection
15
+ */
5
16
  collectionReference: FirebaseFirestoreTypes.CollectionReference<AppModelType>;
17
+ /**
18
+ * Non composite filter constraints such as limit, order, where
19
+ */
6
20
  queryConstraints?: QueryConstraint[] | QueryNonFilterConstraint[];
7
- compositeFilter?: FirebaseFirestoreTypes.QueryCompositeFilterConstraint;
21
+ /**
22
+ * Composite filter
23
+ */
24
+ compositeFilter?: QueryFilterConstraint;
8
25
  };
9
26
  /**
10
- * Custom hook that creates an infinite query using Firestore, allowing for query constraints, composite filters, and converters.
11
- * It fetches data in pages and can load more as required.
27
+ * Executes an infinite query on a Firestore data source and returns the resulting documents as an array.
28
+ *
29
+ * @group Hook
30
+ *
31
+ * @param {UseInfiniteQueryOptions<AppModelType, TQueryKey>} options - Configuration options for the query.
32
+ *
33
+ * @returns {UseInfiniteQueryResult<InfiniteData<AppModelType[]>>} An object containing documents that match the query.
12
34
  *
13
- * @param {UseInfiniteQueryOptions<AppModelType, DbModelType>} options - Configuration options for the infinite query, including Firestore query reference, query constraints, composite filter, and data converter.
14
- * @returns {UseInfiniteQueryResult<InfiniteData<AppModelType[]>>} Result object containing the infinite data and methods for fetching more pages.
35
+ * @example
36
+ * ```jsx
37
+ * export const MyComponent = () => {
38
+ * const docs = useInfiniteQuery({
39
+ * options: {
40
+ * queryKey: ['key']
41
+ * },
42
+ * collectionReference: collection(),
43
+ * });
44
+ * console.log(docs);
45
+ * };
46
+ * ```
15
47
  */
16
- export declare const useInfiniteQuery: <AppModelType extends FirebaseFirestoreTypes.DocumentData = FirebaseFirestoreTypes.DocumentData>({ options, collectionReference, queryConstraints, compositeFilter }: UseInfiniteQueryOptions<AppModelType>) => UseInfiniteQueryResult<InfiniteData<AppModelType[]>>;
48
+ export declare const useInfiniteQuery: <AppModelType extends AppModel = AppModel, TQueryKey extends QueryKey = QueryKey, TPageParam = unknown>({ options, collectionReference, queryConstraints, compositeFilter }: UseInfiniteQueryOptions<AppModelType, TQueryKey, TPageParam>) => UseInfiniteQueryResult<InfiniteData<AppModelType[]>>;
17
49
  export {};
@@ -1,11 +1,26 @@
1
1
  import { getDocs, query } from "@react-native-firebase/firestore";
2
2
  import { useInfiniteQuery as useInfiniteReactQuery } from "@tanstack/react-query";
3
3
  /**
4
- * Custom hook that creates an infinite query using Firestore, allowing for query constraints, composite filters, and converters.
5
- * It fetches data in pages and can load more as required.
4
+ * Executes an infinite query on a Firestore data source and returns the resulting documents as an array.
6
5
  *
7
- * @param {UseInfiniteQueryOptions<AppModelType, DbModelType>} options - Configuration options for the infinite query, including Firestore query reference, query constraints, composite filter, and data converter.
8
- * @returns {UseInfiniteQueryResult<InfiniteData<AppModelType[]>>} Result object containing the infinite data and methods for fetching more pages.
6
+ * @group Hook
7
+ *
8
+ * @param {UseInfiniteQueryOptions<AppModelType, TQueryKey>} options - Configuration options for the query.
9
+ *
10
+ * @returns {UseInfiniteQueryResult<InfiniteData<AppModelType[]>>} An object containing documents that match the query.
11
+ *
12
+ * @example
13
+ * ```jsx
14
+ * export const MyComponent = () => {
15
+ * const docs = useInfiniteQuery({
16
+ * options: {
17
+ * queryKey: ['key']
18
+ * },
19
+ * collectionReference: collection(),
20
+ * });
21
+ * console.log(docs);
22
+ * };
23
+ * ```
9
24
  */
10
25
  export const useInfiniteQuery = ({ options, collectionReference, queryConstraints = [], compositeFilter }) => {
11
26
  return useInfiniteReactQuery({