@@ -84,3 +84,145 @@ public struct QueryOptions<TData: Sendable, TKey: QueryKey>: Sendable, Equatable
8484 self . enabled = enabled
8585 }
8686}
87+
88+ // MARK: - KeyTuple Convenience Initializers
89+
90+ extension QueryOptions {
91+ /// Convenience initializer for KeyTuple2
92+ public init < K1: QueryKeyCodable , K2: QueryKeyCodable > (
93+ queryKey: KeyTuple2 < K1 , K2 > ,
94+ queryFn: @escaping QueryFunction < TData , KeyTuple2 < K1 , K2 > > ,
95+ retryConfig: RetryConfig = RetryConfig ( ) ,
96+ networkMode: NetworkMode = . online,
97+ staleTime: TimeInterval = 0 ,
98+ gcTime: TimeInterval = defaultGcTime,
99+ refetchTriggers: RefetchTriggers = . default,
100+ refetchOnAppear: RefetchOnAppear = . always,
101+ initialData: TData ? = nil ,
102+ initialDataFunction: InitialDataFunction < TData > ? = nil ,
103+ structuralSharing: Bool = true ,
104+ meta: QueryMeta ? = nil ,
105+ enabled: Bool = true
106+ ) where TKey == KeyTuple2 < K1 , K2 > {
107+ self . init (
108+ queryKey: queryKey,
109+ queryFn: queryFn,
110+ retryConfig: retryConfig,
111+ networkMode: networkMode,
112+ staleTime: staleTime,
113+ gcTime: gcTime,
114+ refetchTriggers: refetchTriggers,
115+ refetchOnAppear: refetchOnAppear,
116+ initialData: initialData,
117+ initialDataFunction: initialDataFunction,
118+ structuralSharing: structuralSharing,
119+ meta: meta,
120+ enabled: enabled
121+ )
122+ }
123+
124+ /// Convenience initializer for KeyTuple3
125+ public init < K1: QueryKeyCodable , K2: QueryKeyCodable , K3: QueryKeyCodable > (
126+ queryKey: KeyTuple3 < K1 , K2 , K3 > ,
127+ queryFn: @escaping QueryFunction < TData , KeyTuple3 < K1 , K2 , K3 > > ,
128+ retryConfig: RetryConfig = RetryConfig ( ) ,
129+ networkMode: NetworkMode = . online,
130+ staleTime: TimeInterval = 0 ,
131+ gcTime: TimeInterval = defaultGcTime,
132+ refetchTriggers: RefetchTriggers = . default,
133+ refetchOnAppear: RefetchOnAppear = . always,
134+ initialData: TData ? = nil ,
135+ initialDataFunction: InitialDataFunction < TData > ? = nil ,
136+ structuralSharing: Bool = true ,
137+ meta: QueryMeta ? = nil ,
138+ enabled: Bool = true
139+ ) where TKey == KeyTuple3 < K1 , K2 , K3 > {
140+ self . init (
141+ queryKey: queryKey,
142+ queryFn: queryFn,
143+ retryConfig: retryConfig,
144+ networkMode: networkMode,
145+ staleTime: staleTime,
146+ gcTime: gcTime,
147+ refetchTriggers: refetchTriggers,
148+ refetchOnAppear: refetchOnAppear,
149+ initialData: initialData,
150+ initialDataFunction: initialDataFunction,
151+ structuralSharing: structuralSharing,
152+ meta: meta,
153+ enabled: enabled
154+ )
155+ }
156+
157+ /// Convenience initializer for KeyTuple4
158+ public init < K1: QueryKeyCodable , K2: QueryKeyCodable , K3: QueryKeyCodable , K4: QueryKeyCodable > (
159+ queryKey: KeyTuple4 < K1 , K2 , K3 , K4 > ,
160+ queryFn: @escaping QueryFunction < TData , KeyTuple4 < K1 , K2 , K3 , K4 > > ,
161+ retryConfig: RetryConfig = RetryConfig ( ) ,
162+ networkMode: NetworkMode = . online,
163+ staleTime: TimeInterval = 0 ,
164+ gcTime: TimeInterval = defaultGcTime,
165+ refetchTriggers: RefetchTriggers = . default,
166+ refetchOnAppear: RefetchOnAppear = . always,
167+ initialData: TData ? = nil ,
168+ initialDataFunction: InitialDataFunction < TData > ? = nil ,
169+ structuralSharing: Bool = true ,
170+ meta: QueryMeta ? = nil ,
171+ enabled: Bool = true
172+ ) where TKey == KeyTuple4 < K1 , K2 , K3 , K4 > {
173+ self . init (
174+ queryKey: queryKey,
175+ queryFn: queryFn,
176+ retryConfig: retryConfig,
177+ networkMode: networkMode,
178+ staleTime: staleTime,
179+ gcTime: gcTime,
180+ refetchTriggers: refetchTriggers,
181+ refetchOnAppear: refetchOnAppear,
182+ initialData: initialData,
183+ initialDataFunction: initialDataFunction,
184+ structuralSharing: structuralSharing,
185+ meta: meta,
186+ enabled: enabled
187+ )
188+ }
189+
190+ /// Convenience initializer for KeyTuple5
191+ public init <
192+ K1: QueryKeyCodable ,
193+ K2: QueryKeyCodable ,
194+ K3: QueryKeyCodable ,
195+ K4: QueryKeyCodable ,
196+ K5: QueryKeyCodable
197+ > (
198+ queryKey: KeyTuple5 < K1 , K2 , K3 , K4 , K5 > ,
199+ queryFn: @escaping QueryFunction < TData , KeyTuple5 < K1 , K2 , K3 , K4 , K5 > > ,
200+ retryConfig: RetryConfig = RetryConfig ( ) ,
201+ networkMode: NetworkMode = . online,
202+ staleTime: TimeInterval = 0 ,
203+ gcTime: TimeInterval = defaultGcTime,
204+ refetchTriggers: RefetchTriggers = . default,
205+ refetchOnAppear: RefetchOnAppear = . always,
206+ initialData: TData ? = nil ,
207+ initialDataFunction: InitialDataFunction < TData > ? = nil ,
208+ structuralSharing: Bool = true ,
209+ meta: QueryMeta ? = nil ,
210+ enabled: Bool = true
211+ ) where TKey == KeyTuple5 < K1 , K2 , K3 , K4 , K5 > {
212+ self . init (
213+ queryKey: queryKey,
214+ queryFn: queryFn,
215+ retryConfig: retryConfig,
216+ networkMode: networkMode,
217+ staleTime: staleTime,
218+ gcTime: gcTime,
219+ refetchTriggers: refetchTriggers,
220+ refetchOnAppear: refetchOnAppear,
221+ initialData: initialData,
222+ initialDataFunction: initialDataFunction,
223+ structuralSharing: structuralSharing,
224+ meta: meta,
225+ enabled: enabled
226+ )
227+ }
228+ }
0 commit comments