Skip to content

Commit a0047cd

Browse files
committed
Re: #92 Changes IPostgrestTable<> contract to return the interface rather than a concrete type.
1 parent 13bab8e commit a0047cd

File tree

5 files changed

+158
-158
lines changed

5 files changed

+158
-158
lines changed

Postgrest/Interfaces/IPostgrestTable.cs

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ namespace Supabase.Postgrest.Interfaces
3535
/// </summary>
3636
/// <param name="filters"></param>
3737
/// <returns></returns>
38-
Table<TModel> And(List<IPostgrestQueryFilter> filters);
38+
IPostgrestTable<TModel> And(List<IPostgrestQueryFilter> filters);
3939

4040
/// <summary>
4141
/// Clears currently defined query values.
@@ -52,7 +52,7 @@ namespace Supabase.Postgrest.Interfaces
5252
/// </summary>
5353
/// <param name="columns"></param>
5454
/// <returns></returns>
55-
Table<TModel> Columns(string[] columns);
55+
IPostgrestTable<TModel> Columns(string[] columns);
5656

5757
/// <summary>
5858
/// By using the columns query parameter it’s possible to specify the payload keys that will be inserted and ignore the rest of the payload.
@@ -64,7 +64,7 @@ namespace Supabase.Postgrest.Interfaces
6464
/// </summary>
6565
/// <param name="predicate"></param>
6666
/// <returns></returns>
67-
Table<TModel> Columns(Expression<Func<TModel, object[]>> predicate);
67+
IPostgrestTable<TModel> Columns(Expression<Func<TModel, object[]>> predicate);
6868

6969
/// <summary>
7070
/// Returns ONLY a count from the specified query.
@@ -99,7 +99,7 @@ Task<ModeledResponse<TModel>> Delete(TModel model, QueryOptions? options = null,
9999
/// <param name="op">Operation to perform.</param>
100100
/// <param name="criterion">Value to filter with, must be a `string`, `List&lt;object&gt;`, `Dictionary&lt;string, object&gt;`, `FullTextSearchConfig`, or `Range`</param>
101101
/// <returns></returns>
102-
Table<TModel> Filter<TCriterion>(string columnName, Constants.Operator op, TCriterion? criterion);
102+
IPostgrestTable<TModel> Filter<TCriterion>(string columnName, Constants.Operator op, TCriterion? criterion);
103103

104104
/// <summary>
105105
/// Add a filter to a query request using a predicate to select column.
@@ -109,7 +109,7 @@ Task<ModeledResponse<TModel>> Delete(TModel model, QueryOptions? options = null,
109109
/// <param name="criterion">Value to filter with, must be a `string`, `List&lt;object&gt;`, `Dictionary&lt;string, object&gt;`, `FullTextSearchConfig`, or `Range`</param>
110110
/// <returns></returns>
111111
/// <exception cref="ArgumentException"></exception>
112-
Table<TModel> Filter<TCriterion>(Expression<Func<TModel, object>> predicate, Constants.Operator op,
112+
IPostgrestTable<TModel> Filter<TCriterion>(Expression<Func<TModel, object>> predicate, Constants.Operator op,
113113
TCriterion? criterion);
114114

115115
/// <summary>
@@ -145,28 +145,28 @@ Task<ModeledResponse<TModel>> Insert(TModel model, QueryOptions? options = null,
145145
/// <param name="limit"></param>
146146
/// <param name="foreignTableName"></param>
147147
/// <returns></returns>
148-
Table<TModel> Limit(int limit, string? foreignTableName = null);
148+
IPostgrestTable<TModel> Limit(int limit, string? foreignTableName = null);
149149

150150
/// <summary>
151151
/// Finds all rows whose columns match the specified `query` object.
152152
/// </summary>
153153
/// <param name="query">The object to filter with, with column names as keys mapped to their filter values.</param>
154154
/// <returns></returns>
155-
Table<TModel> Match(Dictionary<string, string> query);
155+
IPostgrestTable<TModel> Match(Dictionary<string, string> query);
156156

157157
/// <summary>
158158
/// Fills in query parameters based on a given model's primary key(s).
159159
/// </summary>
160160
/// <param name="model">A model with a primary key column</param>
161161
/// <returns></returns>
162-
Table<TModel> Match(TModel model);
162+
IPostgrestTable<TModel> Match(TModel model);
163163

164164
/// <summary>
165165
/// Adds a NOT filter to the current query args.
166166
/// </summary>
167167
/// <param name="filter"></param>
168168
/// <returns></returns>
169-
Table<TModel> Not(IPostgrestQueryFilter filter);
169+
IPostgrestTable<TModel> Not(IPostgrestQueryFilter filter);
170170

171171
/// <summary>
172172
/// Adds a NOT filter to the current query args.
@@ -175,7 +175,7 @@ Task<ModeledResponse<TModel>> Insert(TModel model, QueryOptions? options = null,
175175
/// <param name="op"></param>
176176
/// <param name="criteria"></param>
177177
/// <returns></returns>
178-
Table<TModel> Not(string columnName, Constants.Operator op, Dictionary<string, object> criteria);
178+
IPostgrestTable<TModel> Not(string columnName, Constants.Operator op, Dictionary<string, object> criteria);
179179

180180
/// <summary>
181181
/// Adds a NOT filter to the current query args.
@@ -184,7 +184,7 @@ Task<ModeledResponse<TModel>> Insert(TModel model, QueryOptions? options = null,
184184
/// <param name="op"></param>
185185
/// <param name="criteria"></param>
186186
/// <returns></returns>
187-
Table<TModel> Not(Expression<Func<TModel, object>> predicate, Constants.Operator op, Dictionary<string, object> criteria);
187+
IPostgrestTable<TModel> Not(Expression<Func<TModel, object>> predicate, Constants.Operator op, Dictionary<string, object> criteria);
188188

189189
/// <summary>
190190
/// Adds a NOT filter to the current query args.
@@ -197,7 +197,7 @@ Task<ModeledResponse<TModel>> Insert(TModel model, QueryOptions? options = null,
197197
/// <param name="op"></param>
198198
/// <param name="criteria"></param>
199199
/// <returns></returns>
200-
Table<TModel> Not<TCriterion>(string columnName, Constants.Operator op, List<TCriterion> criteria);
200+
IPostgrestTable<TModel> Not<TCriterion>(string columnName, Constants.Operator op, List<TCriterion> criteria);
201201

202202
/// <summary>
203203
/// Adds a NOT filter to the current query args.
@@ -210,7 +210,7 @@ Task<ModeledResponse<TModel>> Insert(TModel model, QueryOptions? options = null,
210210
/// <param name="op"></param>
211211
/// <param name="criteria"></param>
212212
/// <returns></returns>
213-
Table<TModel> Not<TCriterion>(Expression<Func<TModel, object>> predicate, Constants.Operator op,
213+
IPostgrestTable<TModel> Not<TCriterion>(Expression<Func<TModel, object>> predicate, Constants.Operator op,
214214
List<TCriterion> criteria);
215215

216216
/// <summary>
@@ -225,7 +225,7 @@ Table<TModel> Not<TCriterion>(Expression<Func<TModel, object>> predicate, Consta
225225
/// <param name="op"></param>
226226
/// <param name="criterion"></param>
227227
/// <returns></returns>
228-
Table<TModel> Not<TCriterion>(string columnName, Constants.Operator op, TCriterion? criterion);
228+
IPostgrestTable<TModel> Not<TCriterion>(string columnName, Constants.Operator op, TCriterion? criterion);
229229

230230

231231
/// <summary>
@@ -240,7 +240,7 @@ Table<TModel> Not<TCriterion>(Expression<Func<TModel, object>> predicate, Consta
240240
/// <param name="op"></param>
241241
/// <param name="criterion"></param>
242242
/// <returns></returns>
243-
Table<TModel> Not<TCriterion>(Expression<Func<TModel, object>> predicate, Constants.Operator op,
243+
IPostgrestTable<TModel> Not<TCriterion>(Expression<Func<TModel, object>> predicate, Constants.Operator op,
244244
TCriterion? criterion);
245245

246246
/// <summary>
@@ -249,28 +249,28 @@ Table<TModel> Not<TCriterion>(Expression<Func<TModel, object>> predicate, Consta
249249
/// <param name="offset"></param>
250250
/// <param name="foreignTableName"></param>
251251
/// <returns></returns>
252-
Table<TModel> Offset(int offset, string? foreignTableName = null);
252+
IPostgrestTable<TModel> Offset(int offset, string? foreignTableName = null);
253253

254254
/// <summary>
255255
/// By specifying the onConflict query parameter, you can make UPSERT work on a column(s) that has a UNIQUE constraint.
256256
/// </summary>
257257
/// <param name="columnName"></param>
258258
/// <returns></returns>
259-
Table<TModel> OnConflict(string columnName);
259+
IPostgrestTable<TModel> OnConflict(string columnName);
260260

261261
/// <summary>
262262
/// Set an onConflict query parameter for UPSERTing on a column that has a UNIQUE constraint using a linq predicate.
263263
/// </summary>
264264
/// <param name="predicate">Expects a column from the model to be returned.</param>
265265
/// <returns></returns>
266-
Table<TModel> OnConflict(Expression<Func<TModel, object>> predicate);
266+
IPostgrestTable<TModel> OnConflict(Expression<Func<TModel, object>> predicate);
267267

268268
/// <summary>
269269
/// Adds a OR Filter to the current query args.
270270
/// </summary>
271271
/// <param name="filters"></param>
272272
/// <returns></returns>
273-
Table<TModel> Or(List<IPostgrestQueryFilter> filters);
273+
IPostgrestTable<TModel> Or(List<IPostgrestQueryFilter> filters);
274274

275275
/// <summary>
276276
/// Adds an ordering to the current query args.
@@ -284,7 +284,7 @@ Table<TModel> Not<TCriterion>(Expression<Func<TModel, object>> predicate, Consta
284284
/// <param name="ordering"></param>
285285
/// <param name="nullPosition"></param>
286286
/// <returns></returns>
287-
Table<TModel> Order(string column, Constants.Ordering ordering,
287+
IPostgrestTable<TModel> Order(string column, Constants.Ordering ordering,
288288
Constants.NullPosition nullPosition = Constants.NullPosition.First);
289289

290290
/// <summary>
@@ -299,7 +299,7 @@ Table<TModel> Order(string column, Constants.Ordering ordering,
299299
/// <param name="ordering">>Expects a columns from the Model to be returned</param>
300300
/// <param name="nullPosition"></param>
301301
/// <returns></returns>
302-
Table<TModel> Order(Expression<Func<TModel, object>> predicate, Constants.Ordering ordering,
302+
IPostgrestTable<TModel> Order(Expression<Func<TModel, object>> predicate, Constants.Ordering ordering,
303303
Constants.NullPosition nullPosition = Constants.NullPosition.First);
304304

305305
/// <summary>
@@ -315,30 +315,30 @@ Table<TModel> Order(Expression<Func<TModel, object>> predicate, Constants.Orderi
315315
/// <param name="ordering"></param>
316316
/// <param name="nullPosition"></param>
317317
/// <returns></returns>
318-
Table<TModel> Order(string foreignTable, string column, Constants.Ordering ordering,
318+
IPostgrestTable<TModel> Order(string foreignTable, string column, Constants.Ordering ordering,
319319
Constants.NullPosition nullPosition = Constants.NullPosition.First);
320320

321321
/// <summary>
322322
/// Sets a FROM range, similar to a `StartAt` query.
323323
/// </summary>
324324
/// <param name="from"></param>
325325
/// <returns></returns>
326-
Table<TModel> Range(int from);
326+
IPostgrestTable<TModel> Range(int from);
327327

328328
/// <summary>
329329
/// Sets a bounded range to the current query.
330330
/// </summary>
331331
/// <param name="from"></param>
332332
/// <param name="to"></param>
333333
/// <returns></returns>
334-
Table<TModel> Range(int from, int to);
334+
IPostgrestTable<TModel> Range(int from, int to);
335335

336336
/// <summary>
337337
/// Select columns for query.
338338
/// </summary>
339339
/// <param name="columnQuery"></param>
340340
/// <returns></returns>
341-
Table<TModel> Select(string columnQuery);
341+
IPostgrestTable<TModel> Select(string columnQuery);
342342

343343
/// <summary>
344344
/// Select columns using a predicate function.
@@ -348,7 +348,7 @@ Table<TModel> Order(string foreignTable, string column, Constants.Ordering order
348348
/// </summary>
349349
/// <param name="predicate">Expects an array of columns from the Model to be returned.</param>
350350
/// <returns></returns>
351-
Table<TModel> Select(Expression<Func<TModel, object[]>> predicate);
351+
IPostgrestTable<TModel> Select(Expression<Func<TModel, object[]>> predicate);
352352

353353
/// <summary>
354354
/// Filter a query based on a predicate function.
@@ -365,7 +365,7 @@ Table<TModel> Order(string foreignTable, string column, Constants.Ordering order
365365
/// </summary>
366366
/// <param name="predicate"></param>
367367
/// <returns></returns>
368-
Table<TModel> Where(Expression<Func<TModel, bool>> predicate);
368+
IPostgrestTable<TModel> Where(Expression<Func<TModel, bool>> predicate);
369369

370370
/// <summary>
371371
/// Executes a query that expects to have a single object returned, rather than returning list of models
@@ -383,7 +383,7 @@ Table<TModel> Order(string foreignTable, string column, Constants.Ordering order
383383
/// <param name="keySelector"></param>
384384
/// <param name="value"></param>
385385
/// <returns></returns>
386-
Table<TModel> Set(Expression<Func<TModel, object>> keySelector, object? value);
386+
IPostgrestTable<TModel> Set(Expression<Func<TModel, object>> keySelector, object? value);
387387

388388
/// <summary>
389389
/// Specifies a KeyValuePair to be updated. Should be combined with filters/where clauses.
@@ -393,7 +393,7 @@ Table<TModel> Order(string foreignTable, string column, Constants.Ordering order
393393
/// <param name="keyValuePairExpression"></param>
394394
/// <returns></returns>
395395
/// <exception cref="ArgumentException"></exception>
396-
Table<TModel> Set(Expression<Func<TModel, KeyValuePair<object, object?>>> keyValuePairExpression);
396+
IPostgrestTable<TModel> Set(Expression<Func<TModel, KeyValuePair<object, object?>>> keyValuePairExpression);
397397

398398
/// <summary>
399399
/// Calls an Update function after `Set` has been called.

Postgrest/Linq/WhereExpressionVisitor.cs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ protected override Expression VisitMethodCall(MethodCallExpression node)
123123
case nameof(String.Contains):
124124

125125
if (typeof(ICollection).IsAssignableFrom(node.Method.DeclaringType))
126-
Filter = new QueryFilter(column, Constants.Operator.Contains, GetArgumentValues(node));
126+
Filter = new QueryFilter(column, Operator.Contains, GetArgumentValues(node));
127127
else
128-
Filter = new QueryFilter(column, Constants.Operator.Like, "*" + GetArgumentValues(node).First() + "*");
128+
Filter = new QueryFilter(column, Operator.Like, "*" + GetArgumentValues(node).First() + "*");
129129

130130
break;
131131
default:
@@ -141,7 +141,7 @@ protected override Expression VisitMethodCall(MethodCallExpression node)
141141
/// <param name="column"></param>
142142
/// <param name="op"></param>
143143
/// <param name="constantExpression"></param>
144-
private void HandleConstantExpression(string column, Constants.Operator op, ConstantExpression constantExpression)
144+
private void HandleConstantExpression(string column, Operator op, ConstantExpression constantExpression)
145145
{
146146
if (constantExpression.Type.IsEnum)
147147
{
@@ -160,7 +160,7 @@ private void HandleConstantExpression(string column, Constants.Operator op, Cons
160160
/// <param name="column"></param>
161161
/// <param name="op"></param>
162162
/// <param name="memberExpression"></param>
163-
private void HandleMemberExpression(string column, Constants.Operator op, MemberExpression memberExpression)
163+
private void HandleMemberExpression(string column, Operator op, MemberExpression memberExpression)
164164
{
165165
Filter = new QueryFilter(column, op, GetMemberExpressionValue(memberExpression));
166166
}
@@ -171,7 +171,7 @@ private void HandleMemberExpression(string column, Constants.Operator op, Member
171171
/// <param name="column"></param>
172172
/// <param name="op"></param>
173173
/// <param name="unaryExpression"></param>
174-
private void HandleUnaryExpression(string column, Constants.Operator op, UnaryExpression unaryExpression)
174+
private void HandleUnaryExpression(string column, Operator op, UnaryExpression unaryExpression)
175175
{
176176
if (unaryExpression.Operand is ConstantExpression constantExpression)
177177
{
@@ -193,7 +193,7 @@ private void HandleUnaryExpression(string column, Constants.Operator op, UnaryEx
193193
/// <param name="column"></param>
194194
/// <param name="op"></param>
195195
/// <param name="newExpression"></param>
196-
private void HandleNewExpression(string column, Constants.Operator op, NewExpression newExpression)
196+
private void HandleNewExpression(string column, Operator op, NewExpression newExpression)
197197
{
198198
var argumentValues = new List<object>();
199199
foreach (var argument in newExpression.Arguments)
@@ -279,22 +279,22 @@ private object GetMemberExpressionValue(MemberExpression member)
279279
/// </summary>
280280
/// <param name="node"></param>
281281
/// <returns></returns>
282-
private Constants.Operator GetMappedOperator(Expression node)
282+
private Operator GetMappedOperator(Expression node)
283283
{
284284
return node.NodeType switch
285285
{
286-
ExpressionType.Not => Constants.Operator.Not,
287-
ExpressionType.And => Constants.Operator.And,
288-
ExpressionType.AndAlso => Constants.Operator.And,
289-
ExpressionType.OrElse => Constants.Operator.Or,
290-
ExpressionType.Or => Constants.Operator.Or,
291-
ExpressionType.Equal => Constants.Operator.Equals,
292-
ExpressionType.NotEqual => Constants.Operator.NotEqual,
293-
ExpressionType.LessThan => Constants.Operator.LessThan,
294-
ExpressionType.GreaterThan => Constants.Operator.GreaterThan,
295-
ExpressionType.LessThanOrEqual => Constants.Operator.LessThanOrEqual,
296-
ExpressionType.GreaterThanOrEqual => Constants.Operator.GreaterThanOrEqual,
297-
_ => Constants.Operator.Equals
286+
ExpressionType.Not => Operator.Not,
287+
ExpressionType.And => Operator.And,
288+
ExpressionType.AndAlso => Operator.And,
289+
ExpressionType.OrElse => Operator.Or,
290+
ExpressionType.Or => Operator.Or,
291+
ExpressionType.Equal => Operator.Equals,
292+
ExpressionType.NotEqual => Operator.NotEqual,
293+
ExpressionType.LessThan => Operator.LessThan,
294+
ExpressionType.GreaterThan => Operator.GreaterThan,
295+
ExpressionType.LessThanOrEqual => Operator.LessThanOrEqual,
296+
ExpressionType.GreaterThanOrEqual => Operator.GreaterThanOrEqual,
297+
_ => Operator.Equals
298298
};
299299
}
300300

0 commit comments

Comments
 (0)