diff --git a/Postgrest/Interfaces/IPostgrestTable.cs b/Postgrest/Interfaces/IPostgrestTable.cs index 649d466..ca06d5d 100644 --- a/Postgrest/Interfaces/IPostgrestTable.cs +++ b/Postgrest/Interfaces/IPostgrestTable.cs @@ -35,7 +35,7 @@ namespace Supabase.Postgrest.Interfaces /// /// /// - Table And(List filters); + IPostgrestTable And(List filters); /// /// Clears currently defined query values. @@ -52,7 +52,7 @@ namespace Supabase.Postgrest.Interfaces /// /// /// - Table Columns(string[] columns); + IPostgrestTable Columns(string[] columns); /// /// 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 /// /// /// - Table Columns(Expression> predicate); + IPostgrestTable Columns(Expression> predicate); /// /// Returns ONLY a count from the specified query. @@ -99,7 +99,7 @@ Task> Delete(TModel model, QueryOptions? options = null, /// Operation to perform. /// Value to filter with, must be a `string`, `List<object>`, `Dictionary<string, object>`, `FullTextSearchConfig`, or `Range` /// - Table Filter(string columnName, Constants.Operator op, TCriterion? criterion); + IPostgrestTable Filter(string columnName, Constants.Operator op, TCriterion? criterion); /// /// Add a filter to a query request using a predicate to select column. @@ -109,7 +109,7 @@ Task> Delete(TModel model, QueryOptions? options = null, /// Value to filter with, must be a `string`, `List<object>`, `Dictionary<string, object>`, `FullTextSearchConfig`, or `Range` /// /// - Table Filter(Expression> predicate, Constants.Operator op, + IPostgrestTable Filter(Expression> predicate, Constants.Operator op, TCriterion? criterion); /// @@ -145,28 +145,28 @@ Task> Insert(TModel model, QueryOptions? options = null, /// /// /// - Table Limit(int limit, string? foreignTableName = null); + IPostgrestTable Limit(int limit, string? foreignTableName = null); /// /// Finds all rows whose columns match the specified `query` object. /// /// The object to filter with, with column names as keys mapped to their filter values. /// - Table Match(Dictionary query); + IPostgrestTable Match(Dictionary query); /// /// Fills in query parameters based on a given model's primary key(s). /// /// A model with a primary key column /// - Table Match(TModel model); + IPostgrestTable Match(TModel model); /// /// Adds a NOT filter to the current query args. /// /// /// - Table Not(IPostgrestQueryFilter filter); + IPostgrestTable Not(IPostgrestQueryFilter filter); /// /// Adds a NOT filter to the current query args. @@ -175,7 +175,7 @@ Task> Insert(TModel model, QueryOptions? options = null, /// /// /// - Table Not(string columnName, Constants.Operator op, Dictionary criteria); + IPostgrestTable Not(string columnName, Constants.Operator op, Dictionary criteria); /// /// Adds a NOT filter to the current query args. @@ -184,7 +184,7 @@ Task> Insert(TModel model, QueryOptions? options = null, /// /// /// - Table Not(Expression> predicate, Constants.Operator op, Dictionary criteria); + IPostgrestTable Not(Expression> predicate, Constants.Operator op, Dictionary criteria); /// /// Adds a NOT filter to the current query args. @@ -197,7 +197,7 @@ Task> Insert(TModel model, QueryOptions? options = null, /// /// /// - Table Not(string columnName, Constants.Operator op, List criteria); + IPostgrestTable Not(string columnName, Constants.Operator op, List criteria); /// /// Adds a NOT filter to the current query args. @@ -210,7 +210,7 @@ Task> Insert(TModel model, QueryOptions? options = null, /// /// /// - Table Not(Expression> predicate, Constants.Operator op, + IPostgrestTable Not(Expression> predicate, Constants.Operator op, List criteria); /// @@ -225,7 +225,7 @@ Table Not(Expression> predicate, Consta /// /// /// - Table Not(string columnName, Constants.Operator op, TCriterion? criterion); + IPostgrestTable Not(string columnName, Constants.Operator op, TCriterion? criterion); /// @@ -240,7 +240,7 @@ Table Not(Expression> predicate, Consta /// /// /// - Table Not(Expression> predicate, Constants.Operator op, + IPostgrestTable Not(Expression> predicate, Constants.Operator op, TCriterion? criterion); /// @@ -249,28 +249,28 @@ Table Not(Expression> predicate, Consta /// /// /// - Table Offset(int offset, string? foreignTableName = null); + IPostgrestTable Offset(int offset, string? foreignTableName = null); /// /// By specifying the onConflict query parameter, you can make UPSERT work on a column(s) that has a UNIQUE constraint. /// /// /// - Table OnConflict(string columnName); + IPostgrestTable OnConflict(string columnName); /// /// Set an onConflict query parameter for UPSERTing on a column that has a UNIQUE constraint using a linq predicate. /// /// Expects a column from the model to be returned. /// - Table OnConflict(Expression> predicate); + IPostgrestTable OnConflict(Expression> predicate); /// /// Adds a OR Filter to the current query args. /// /// /// - Table Or(List filters); + IPostgrestTable Or(List filters); /// /// Adds an ordering to the current query args. @@ -284,7 +284,7 @@ Table Not(Expression> predicate, Consta /// /// /// - Table Order(string column, Constants.Ordering ordering, + IPostgrestTable Order(string column, Constants.Ordering ordering, Constants.NullPosition nullPosition = Constants.NullPosition.First); /// @@ -299,7 +299,7 @@ Table Order(string column, Constants.Ordering ordering, /// >Expects a columns from the Model to be returned /// /// - Table Order(Expression> predicate, Constants.Ordering ordering, + IPostgrestTable Order(Expression> predicate, Constants.Ordering ordering, Constants.NullPosition nullPosition = Constants.NullPosition.First); /// @@ -315,7 +315,7 @@ Table Order(Expression> predicate, Constants.Orderi /// /// /// - Table Order(string foreignTable, string column, Constants.Ordering ordering, + IPostgrestTable Order(string foreignTable, string column, Constants.Ordering ordering, Constants.NullPosition nullPosition = Constants.NullPosition.First); /// @@ -323,7 +323,7 @@ Table Order(string foreignTable, string column, Constants.Ordering order /// /// /// - Table Range(int from); + IPostgrestTable Range(int from); /// /// Sets a bounded range to the current query. @@ -331,14 +331,14 @@ Table Order(string foreignTable, string column, Constants.Ordering order /// /// /// - Table Range(int from, int to); + IPostgrestTable Range(int from, int to); /// /// Select columns for query. /// /// /// - Table Select(string columnQuery); + IPostgrestTable Select(string columnQuery); /// /// Select columns using a predicate function. @@ -348,7 +348,7 @@ Table Order(string foreignTable, string column, Constants.Ordering order /// /// Expects an array of columns from the Model to be returned. /// - Table Select(Expression> predicate); + IPostgrestTable Select(Expression> predicate); /// /// Filter a query based on a predicate function. @@ -365,7 +365,7 @@ Table Order(string foreignTable, string column, Constants.Ordering order /// /// /// - Table Where(Expression> predicate); + IPostgrestTable Where(Expression> predicate); /// /// Executes a query that expects to have a single object returned, rather than returning list of models @@ -383,7 +383,7 @@ Table Order(string foreignTable, string column, Constants.Ordering order /// /// /// - Table Set(Expression> keySelector, object? value); + IPostgrestTable Set(Expression> keySelector, object? value); /// /// Specifies a KeyValuePair to be updated. Should be combined with filters/where clauses. @@ -393,7 +393,7 @@ Table Order(string foreignTable, string column, Constants.Ordering order /// /// /// - Table Set(Expression>> keyValuePairExpression); + IPostgrestTable Set(Expression>> keyValuePairExpression); /// /// Calls an Update function after `Set` has been called. diff --git a/Postgrest/Linq/WhereExpressionVisitor.cs b/Postgrest/Linq/WhereExpressionVisitor.cs index e342b81..8b6b63c 100644 --- a/Postgrest/Linq/WhereExpressionVisitor.cs +++ b/Postgrest/Linq/WhereExpressionVisitor.cs @@ -123,9 +123,9 @@ protected override Expression VisitMethodCall(MethodCallExpression node) case nameof(String.Contains): if (typeof(ICollection).IsAssignableFrom(node.Method.DeclaringType)) - Filter = new QueryFilter(column, Constants.Operator.Contains, GetArgumentValues(node)); + Filter = new QueryFilter(column, Operator.Contains, GetArgumentValues(node)); else - Filter = new QueryFilter(column, Constants.Operator.Like, "*" + GetArgumentValues(node).First() + "*"); + Filter = new QueryFilter(column, Operator.Like, "*" + GetArgumentValues(node).First() + "*"); break; default: @@ -141,7 +141,7 @@ protected override Expression VisitMethodCall(MethodCallExpression node) /// /// /// - private void HandleConstantExpression(string column, Constants.Operator op, ConstantExpression constantExpression) + private void HandleConstantExpression(string column, Operator op, ConstantExpression constantExpression) { if (constantExpression.Type.IsEnum) { @@ -160,7 +160,7 @@ private void HandleConstantExpression(string column, Constants.Operator op, Cons /// /// /// - private void HandleMemberExpression(string column, Constants.Operator op, MemberExpression memberExpression) + private void HandleMemberExpression(string column, Operator op, MemberExpression memberExpression) { Filter = new QueryFilter(column, op, GetMemberExpressionValue(memberExpression)); } @@ -171,7 +171,7 @@ private void HandleMemberExpression(string column, Constants.Operator op, Member /// /// /// - private void HandleUnaryExpression(string column, Constants.Operator op, UnaryExpression unaryExpression) + private void HandleUnaryExpression(string column, Operator op, UnaryExpression unaryExpression) { if (unaryExpression.Operand is ConstantExpression constantExpression) { @@ -193,7 +193,7 @@ private void HandleUnaryExpression(string column, Constants.Operator op, UnaryEx /// /// /// - private void HandleNewExpression(string column, Constants.Operator op, NewExpression newExpression) + private void HandleNewExpression(string column, Operator op, NewExpression newExpression) { var argumentValues = new List(); foreach (var argument in newExpression.Arguments) @@ -279,22 +279,22 @@ private object GetMemberExpressionValue(MemberExpression member) /// /// /// - private Constants.Operator GetMappedOperator(Expression node) + private Operator GetMappedOperator(Expression node) { return node.NodeType switch { - ExpressionType.Not => Constants.Operator.Not, - ExpressionType.And => Constants.Operator.And, - ExpressionType.AndAlso => Constants.Operator.And, - ExpressionType.OrElse => Constants.Operator.Or, - ExpressionType.Or => Constants.Operator.Or, - ExpressionType.Equal => Constants.Operator.Equals, - ExpressionType.NotEqual => Constants.Operator.NotEqual, - ExpressionType.LessThan => Constants.Operator.LessThan, - ExpressionType.GreaterThan => Constants.Operator.GreaterThan, - ExpressionType.LessThanOrEqual => Constants.Operator.LessThanOrEqual, - ExpressionType.GreaterThanOrEqual => Constants.Operator.GreaterThanOrEqual, - _ => Constants.Operator.Equals + ExpressionType.Not => Operator.Not, + ExpressionType.And => Operator.And, + ExpressionType.AndAlso => Operator.And, + ExpressionType.OrElse => Operator.Or, + ExpressionType.Or => Operator.Or, + ExpressionType.Equal => Operator.Equals, + ExpressionType.NotEqual => Operator.NotEqual, + ExpressionType.LessThan => Operator.LessThan, + ExpressionType.GreaterThan => Operator.GreaterThan, + ExpressionType.LessThanOrEqual => Operator.LessThanOrEqual, + ExpressionType.GreaterThanOrEqual => Operator.GreaterThanOrEqual, + _ => Operator.Equals }; } diff --git a/Postgrest/QueryFilter.cs b/Postgrest/QueryFilter.cs index d8c050e..6f21c55 100644 --- a/Postgrest/QueryFilter.cs +++ b/Postgrest/QueryFilter.cs @@ -23,7 +23,7 @@ public class QueryFilter : IPostgrestQueryFilter public object? Criteria { get; } /// - public Constants.Operator Op { get; } + public Operator Op { get; } /// public string? Property { get; } @@ -35,7 +35,7 @@ public class QueryFilter : IPostgrestQueryFilter /// /// /// - public QueryFilter(Expression> predicate, Constants.Operator op, TCriterion? criterion) + public QueryFilter(Expression> predicate, Operator op, TCriterion? criterion) { var visitor = new SelectExpressionVisitor(); visitor.Visit(predicate); @@ -66,7 +66,7 @@ public class QueryFilter : IPostgrestQueryFilter public string? Property { get; private set; } /// - public Constants.Operator Op { get; private set; } + public Operator Op { get; private set; } /// public object? Criteria { get; private set; } @@ -77,7 +77,7 @@ public class QueryFilter : IPostgrestQueryFilter /// Column name /// Operation: And, Equals, GreaterThan, LessThan, GreaterThanOrEqual, LessThanOrEqual, NotEqual, Is, Adjacent, Not, Like, ILike /// - public QueryFilter(string property, Constants.Operator op, object? criteria) + public QueryFilter(string property, Operator op, object? criteria) { if (criteria is DateTime dateTime) criteria = dateTime.ToString("o", CultureInfo.InvariantCulture); @@ -86,26 +86,26 @@ public QueryFilter(string property, Constants.Operator op, object? criteria) switch (op) { - case Constants.Operator.And: - case Constants.Operator.Equals: - case Constants.Operator.GreaterThan: - case Constants.Operator.GreaterThanOrEqual: - case Constants.Operator.LessThan: - case Constants.Operator.LessThanOrEqual: - case Constants.Operator.NotEqual: - case Constants.Operator.Is: - case Constants.Operator.Adjacent: - case Constants.Operator.Not: - case Constants.Operator.Like: - case Constants.Operator.ILike: + case Operator.And: + case Operator.Equals: + case Operator.GreaterThan: + case Operator.GreaterThanOrEqual: + case Operator.LessThan: + case Operator.LessThanOrEqual: + case Operator.NotEqual: + case Operator.Is: + case Operator.Adjacent: + case Operator.Not: + case Operator.Like: + case Operator.ILike: Property = property; Op = op; Criteria = criteria; break; - case Constants.Operator.In: - case Constants.Operator.Contains: - case Constants.Operator.ContainedIn: - case Constants.Operator.Overlap: + case Operator.In: + case Operator.Contains: + case Operator.ContainedIn: + case Operator.Overlap: if (criteria is IList or IDictionary) { Property = property; @@ -131,14 +131,14 @@ public QueryFilter(string property, Constants.Operator op, object? criteria) /// Column Name /// Operation: FTS, PHFTS, PLFTS, WFTS /// - public QueryFilter(string property, Constants.Operator op, FullTextSearchConfig fullTextSearchConfig) + public QueryFilter(string property, Operator op, FullTextSearchConfig fullTextSearchConfig) { switch (op) { - case Constants.Operator.FTS: - case Constants.Operator.PHFTS: - case Constants.Operator.PLFTS: - case Constants.Operator.WFTS: + case Operator.FTS: + case Operator.PHFTS: + case Operator.PLFTS: + case Operator.WFTS: Property = property; Op = op; Criteria = fullTextSearchConfig; @@ -155,18 +155,18 @@ public QueryFilter(string property, Constants.Operator op, FullTextSearchConfig /// /// Operator: Overlap, StrictlyLeft, StrictlyRight, NotRightOf, NotLeftOf, Adjacent /// - public QueryFilter(string property, Constants.Operator op, IntRange range) + public QueryFilter(string property, Operator op, IntRange range) { switch (op) { - case Constants.Operator.Overlap: - case Constants.Operator.Contains: - case Constants.Operator.ContainedIn: - case Constants.Operator.StrictlyLeft: - case Constants.Operator.StrictlyRight: - case Constants.Operator.NotRightOf: - case Constants.Operator.NotLeftOf: - case Constants.Operator.Adjacent: + case Operator.Overlap: + case Operator.Contains: + case Operator.ContainedIn: + case Operator.StrictlyLeft: + case Operator.StrictlyRight: + case Operator.NotRightOf: + case Operator.NotLeftOf: + case Operator.Adjacent: Property = property; Op = op; Criteria = range; @@ -184,12 +184,12 @@ public QueryFilter(string property, Constants.Operator op, IntRange range) /// /// Operation: And, Or /// - public QueryFilter(Constants.Operator op, List filters) + public QueryFilter(Operator op, List filters) { switch (op) { - case Constants.Operator.Or: - case Constants.Operator.And: + case Operator.Or: + case Operator.And: Op = op; Criteria = filters; break; @@ -204,11 +204,11 @@ public QueryFilter(Constants.Operator op, List filters) /// /// Operation: Not. /// - public QueryFilter(Constants.Operator op, IPostgrestQueryFilter filter) + public QueryFilter(Operator op, IPostgrestQueryFilter filter) { switch (op) { - case Constants.Operator.Not: + case Operator.Not: Op = op; Criteria = filter; break; diff --git a/Postgrest/QueryOrderer.cs b/Postgrest/QueryOrderer.cs index b799e04..2c38152 100644 --- a/Postgrest/QueryOrderer.cs +++ b/Postgrest/QueryOrderer.cs @@ -8,10 +8,10 @@ public class QueryOrderer { public string? ForeignTable { get; } public string Column { get; } - public Constants.Ordering Ordering { get; } - public Constants.NullPosition NullPosition { get; } + public Ordering Ordering { get; } + public NullPosition NullPosition { get; } - public QueryOrderer(string? foreignTable, string column, Constants.Ordering ordering, Constants.NullPosition nullPosition) + public QueryOrderer(string? foreignTable, string column, Ordering ordering, NullPosition nullPosition) { ForeignTable = foreignTable; Column = column; diff --git a/Postgrest/Table.cs b/Postgrest/Table.cs index 5b21f10..ef23779 100644 --- a/Postgrest/Table.cs +++ b/Postgrest/Table.cs @@ -99,7 +99,7 @@ public Table(string baseUrl, JsonSerializerSettings serializerSettings, ClientOp } /// - public Table Filter(Expression> predicate, Constants.Operator op, + public IPostgrestTable Filter(Expression> predicate, Operator op, TCriterion? criterion) { var visitor = new SelectExpressionVisitor(); @@ -115,21 +115,21 @@ public Table Filter(Expression> predica } /// - public Table Filter(string columnName, Constants.Operator op, TCriterion? criterion) + public IPostgrestTable Filter(string columnName, Operator op, TCriterion? criterion) { switch (criterion) { case null: switch (op) { - case Constants.Operator.Equals: - case Constants.Operator.Is: - _filters.Add(new QueryFilter(columnName, Constants.Operator.Is, QueryFilter.NullVal)); + case Operator.Equals: + case Operator.Is: + _filters.Add(new QueryFilter(columnName, Operator.Is, QueryFilter.NullVal)); break; - case Constants.Operator.Not: - case Constants.Operator.NotEqual: - _filters.Add(new QueryFilter(columnName, Constants.Operator.Not, - new QueryFilter(columnName, Constants.Operator.Is, QueryFilter.NullVal))); + case Operator.Not: + case Operator.NotEqual: + _filters.Add(new QueryFilter(columnName, Operator.Not, + new QueryFilter(columnName, Operator.Is, QueryFilter.NullVal))); break; default: throw new PostgrestException( @@ -169,18 +169,18 @@ public Table Filter(string columnName, Constants.Operator op } /// - public Table Not(IPostgrestQueryFilter filter) + public IPostgrestTable Not(IPostgrestQueryFilter filter) { - _filters.Add(new QueryFilter(Constants.Operator.Not, filter)); + _filters.Add(new QueryFilter(Operator.Not, filter)); return this; } /// - public Table Not(string columnName, Constants.Operator op, TCriterion? criterion) => + public IPostgrestTable Not(string columnName, Operator op, TCriterion? criterion) => Not(new QueryFilter(columnName, op, criterion)); /// - public Table Not(Expression> predicate, Constants.Operator op, + public IPostgrestTable Not(Expression> predicate, Operator op, TCriterion? criterion) { var visitor = new SelectExpressionVisitor(); @@ -196,11 +196,11 @@ public Table Not(Expression> predicate, } /// - public Table Not(string columnName, Constants.Operator op, List criteria) => + public IPostgrestTable Not(string columnName, Operator op, List criteria) => Not(new QueryFilter(columnName, op, criteria.Cast().ToList())); /// - public Table Not(Expression> predicate, Constants.Operator op, + public IPostgrestTable Not(Expression> predicate, Operator op, List criteria) { var visitor = new SelectExpressionVisitor(); @@ -216,11 +216,11 @@ public Table Not(Expression> predicate, } /// - public Table Not(string columnName, Constants.Operator op, Dictionary criteria) => + public IPostgrestTable Not(string columnName, Operator op, Dictionary criteria) => Not(new QueryFilter(columnName, op, criteria)); /// - public Table Not(Expression> predicate, Constants.Operator op, + public IPostgrestTable Not(Expression> predicate, Operator op, Dictionary criteria) { var visitor = new SelectExpressionVisitor(); @@ -237,44 +237,44 @@ public Table Not(Expression> predicate, Constants.O /// - public Table And(List filters) + public IPostgrestTable And(List filters) { - _filters.Add(new QueryFilter(Constants.Operator.And, filters)); + _filters.Add(new QueryFilter(Operator.And, filters)); return this; } /// - public Table Or(List filters) + public IPostgrestTable Or(List filters) { - _filters.Add(new QueryFilter(Constants.Operator.Or, filters)); + _filters.Add(new QueryFilter(Operator.Or, filters)); return this; } /// - public Table Match(TModel model) + public IPostgrestTable Match(TModel model) { foreach (var kvp in model.PrimaryKey) { - _filters.Add(new QueryFilter(kvp.Key.ColumnName, Constants.Operator.Equals, kvp.Value)); + _filters.Add(new QueryFilter(kvp.Key.ColumnName, Operator.Equals, kvp.Value)); } return this; } /// - public Table Match(Dictionary query) + public IPostgrestTable Match(Dictionary query) { foreach (var param in query) { - _filters.Add(new QueryFilter(param.Key, Constants.Operator.Equals, param.Value)); + _filters.Add(new QueryFilter(param.Key, Operator.Equals, param.Value)); } return this; } /// - public Table Order(Expression> predicate, Constants.Ordering ordering, - Constants.NullPosition nullPosition = Constants.NullPosition.First) + public IPostgrestTable Order(Expression> predicate, Ordering ordering, + NullPosition nullPosition = NullPosition.First) { var visitor = new SelectExpressionVisitor(); visitor.Visit(predicate); @@ -290,29 +290,29 @@ public Table Order(Expression> predicate, Constants /// - public Table Order(string column, Constants.Ordering ordering, Constants.NullPosition nullPosition = Constants.NullPosition.First) + public IPostgrestTable Order(string column, Ordering ordering, NullPosition nullPosition = NullPosition.First) { _orderers.Add(new QueryOrderer(null, column, ordering, nullPosition)); return this; } /// - public Table Order(string foreignTable, string column, Constants.Ordering ordering, - Constants.NullPosition nullPosition = Constants.NullPosition.First) + public IPostgrestTable Order(string foreignTable, string column, Ordering ordering, + NullPosition nullPosition = NullPosition.First) { _orderers.Add(new QueryOrderer(foreignTable, column, ordering, nullPosition)); return this; } /// - public Table Range(int from) + public IPostgrestTable Range(int from) { _rangeFrom = from; return this; } /// - public Table Range(int from, int to) + public IPostgrestTable Range(int from, int to) { _rangeFrom = from; _rangeTo = to; @@ -320,7 +320,7 @@ public Table Range(int from, int to) } /// - public Table Select(string columnQuery) + public IPostgrestTable Select(string columnQuery) { _method = HttpMethod.Get; _columnQuery = columnQuery; @@ -328,7 +328,7 @@ public Table Select(string columnQuery) } /// - public Table Select(Expression> predicate) + public IPostgrestTable Select(Expression> predicate) { var visitor = new SelectExpressionVisitor(); visitor.Visit(predicate); @@ -341,7 +341,7 @@ public Table Select(Expression> predicate) } /// - public Table Where(Expression> predicate) + public IPostgrestTable Where(Expression> predicate) { var visitor = new WhereExpressionVisitor(); visitor.Visit(predicate); @@ -350,11 +350,11 @@ public Table Where(Expression> predicate) throw new ArgumentException( "Unable to parse the supplied predicate, did you return a predicate where each left hand of the condition is a Model property?"); - if (visitor.Filter.Op == Constants.Operator.Equals && visitor.Filter.Criteria == null) - _filters.Add(new QueryFilter(visitor.Filter.Property!, Constants.Operator.Is, QueryFilter.NullVal)); - else if (visitor.Filter.Op == Constants.Operator.NotEqual && visitor.Filter.Criteria == null) - _filters.Add(new QueryFilter(visitor.Filter.Property!, Constants.Operator.Not, - new QueryFilter(visitor.Filter.Property!, Constants.Operator.Is, QueryFilter.NullVal))); + if (visitor.Filter.Op == Operator.Equals && visitor.Filter.Criteria == null) + _filters.Add(new QueryFilter(visitor.Filter.Property!, Operator.Is, QueryFilter.NullVal)); + else if (visitor.Filter.Op == Operator.NotEqual && visitor.Filter.Criteria == null) + _filters.Add(new QueryFilter(visitor.Filter.Property!, Operator.Not, + new QueryFilter(visitor.Filter.Property!, Operator.Is, QueryFilter.NullVal))); else _filters.Add(visitor.Filter); @@ -363,7 +363,7 @@ public Table Where(Expression> predicate) /// - public Table Limit(int limit, string? foreignTableName = null) + public IPostgrestTable Limit(int limit, string? foreignTableName = null) { _limit = limit; _limitForeignKey = foreignTableName; @@ -372,14 +372,14 @@ public Table Limit(int limit, string? foreignTableName = null) /// - public Table OnConflict(string columnName) + public IPostgrestTable OnConflict(string columnName) { _onConflict = columnName; return this; } /// - public Table OnConflict(Expression> predicate) + public IPostgrestTable OnConflict(Expression> predicate) { var visitor = new SelectExpressionVisitor(); visitor.Visit(predicate); @@ -397,7 +397,7 @@ public Table OnConflict(Expression> predicate) /// - public Table Columns(string[] columns) + public IPostgrestTable Columns(string[] columns) { foreach (var column in columns) _columns.Add(column); @@ -407,7 +407,7 @@ public Table Columns(string[] columns) /// - public Table Columns(Expression> predicate) + public IPostgrestTable Columns(Expression> predicate) { var visitor = new SelectExpressionVisitor(); visitor.Visit(predicate); @@ -420,7 +420,7 @@ public Table Columns(Expression> predicate) /// - public Table Offset(int offset, string? foreignTableName = null) + public IPostgrestTable Offset(int offset, string? foreignTableName = null) { _offset = offset; _offsetForeignKey = foreignTableName; @@ -465,7 +465,7 @@ public Task> Upsert(ICollection model, QueryOpti /// - public Table Set(Expression> keySelector, object? value) + public IPostgrestTable Set(Expression> keySelector, object? value) { var visitor = new SetExpressionVisitor(); visitor.Visit(keySelector); @@ -493,7 +493,7 @@ public Table Set(Expression> keySelector, object? v /// - public Table Set(Expression>> keyValuePairExpression) + public IPostgrestTable Set(Expression>> keyValuePairExpression) { var visitor = new SetExpressionVisitor(); visitor.Visit(keyValuePairExpression); @@ -577,7 +577,7 @@ public Task> Delete(TModel model, QueryOptions? options /// - public async Task Count(Constants.CountType type, CancellationToken cancellationToken = default) + public async Task Count(CountType type, CancellationToken cancellationToken = default) { _method = HttpMethod.Head; @@ -777,8 +777,8 @@ internal KeyValuePair PrepareFilter(IPostgrestQueryFilter filter switch (filter.Op) { - case Constants.Operator.Or: - case Constants.Operator.And: + case Operator.Or: + case Operator.And: if (filter.Criteria is List subFilters) { var list = new List>(); @@ -793,7 +793,7 @@ internal KeyValuePair PrepareFilter(IPostgrestQueryFilter filter } break; - case Constants.Operator.Not: + case Operator.Not: if (filter.Criteria is QueryFilter notFilter) { var prepped = PrepareFilter(notFilter); @@ -801,16 +801,16 @@ internal KeyValuePair PrepareFilter(IPostgrestQueryFilter filter } break; - case Constants.Operator.Like: - case Constants.Operator.ILike: - if (filter.Criteria is string likeCriteria && filter.Property != null) + case Operator.Like: + case Operator.ILike: + if (filter is { Criteria: string likeCriteria, Property: not null }) { return new KeyValuePair(filter.Property, $"{asAttribute.Mapping}.{likeCriteria.Replace("%", "*")}"); } break; - case Constants.Operator.In: + case Operator.In: if (filter is { Criteria: IList inCriteria, Property: not null }) { foreach (var item in inCriteria) @@ -827,9 +827,9 @@ internal KeyValuePair PrepareFilter(IPostgrestQueryFilter filter } break; - case Constants.Operator.Contains: - case Constants.Operator.ContainedIn: - case Constants.Operator.Overlap: + case Operator.Contains: + case Operator.ContainedIn: + case Operator.Overlap: switch (filter.Criteria) { case IList listCriteria when filter.Property != null: @@ -849,11 +849,11 @@ internal KeyValuePair PrepareFilter(IPostgrestQueryFilter filter } break; - case Constants.Operator.StrictlyLeft: - case Constants.Operator.StrictlyRight: - case Constants.Operator.NotRightOf: - case Constants.Operator.NotLeftOf: - case Constants.Operator.Adjacent: + case Operator.StrictlyLeft: + case Operator.StrictlyRight: + case Operator.NotRightOf: + case Operator.NotLeftOf: + case Operator.Adjacent: if (filter is { Criteria: IntRange rangeCriterion, Property: not null }) { return new KeyValuePair(filter.Property, @@ -861,10 +861,10 @@ internal KeyValuePair PrepareFilter(IPostgrestQueryFilter filter } break; - case Constants.Operator.FTS: - case Constants.Operator.PHFTS: - case Constants.Operator.PLFTS: - case Constants.Operator.WFTS: + case Operator.FTS: + case Operator.PHFTS: + case Operator.PLFTS: + case Operator.WFTS: if (filter is { Criteria: FullTextSearchConfig searchConfig, Property: not null }) { return new KeyValuePair(filter.Property,