@@ -4,6 +4,8 @@ public class PostgrestFilterBuilder: PostgrestTransformBuilder {
4
4
public enum Operator : String {
5
5
case eq, neq, gt, gte, lt, lte, like, ilike, `is`, `in`, cs, cd, sl, sr, nxl, nxr, adj, ov, fts, plfts, phfts, wfts
6
6
}
7
+
8
+ // MARK: - Filters
7
9
8
10
public func not( column: String , operator op: Operator , value: String ) -> PostgrestFilterBuilder {
9
11
appendSearchParams ( name: column, value: " not. \( op. rawValue) . \( value) " )
@@ -155,4 +157,48 @@ public class PostgrestFilterBuilder: PostgrestTransformBuilder {
155
157
}
156
158
return self
157
159
}
160
+
161
+ // MARK: - Modifiers
162
+
163
+ /// Limits the number of results returned by the query
164
+ /// https://supabase.io/docs/reference/javascript/limit
165
+ /// - Parameter limit: Number of results to return
166
+ public func limit( _ limit: Int ) -> PostgrestFilterBuilder {
167
+ appendSearchParams ( name: " limit " , value: String ( limit) )
168
+ return self
169
+ }
170
+
171
+ /// Offsets the query by a number of results. Useful for paginating queries
172
+ /// https://postgrest.org/en/v8.0/api.html#limits-and-pagination
173
+ /// - Parameter offset: Number of results to offset by
174
+ public func offset( _ offset: Int ) -> PostgrestFilterBuilder {
175
+ appendSearchParams ( name: " offset " , value: String ( offset) )
176
+ return self
177
+ }
178
+
179
+ /// Limits a query to a range of values
180
+ /// Eg: 15 - 30 gets the results from 15 -> 30
181
+ /// https://supabase.io/docs/reference/javascript/range
182
+ /// - Parameters:
183
+ /// - offset: The start offset
184
+ /// - range: The last index of the range
185
+ public func range( _ offset: Int , _ range: Int ) -> PostgrestFilterBuilder {
186
+ return self . offset ( offset) . limit ( range - offset)
187
+ }
188
+
189
+ /// Returns only a single result
190
+ /// https://supabase.io/docs/reference/javascript/single
191
+ public func single( ) -> PostgrestFilterBuilder {
192
+ return self . limit ( 1 )
193
+ }
194
+
195
+ /// Orders the results by a column
196
+ /// https://postgrest.org/en/v8.0/api.html#ordering
197
+ /// - Parameters:
198
+ /// - column: Column to order by
199
+ /// - desc: Toggle descending order
200
+ public func order( _ column: String , desc: Bool = false ) -> PostgrestFilterBuilder {
201
+ appendSearchParams ( name: " order " , value: desc ? " \( column) .desc " : " \( column) .asc " )
202
+ return self
203
+ }
158
204
}
0 commit comments