diff --git a/Postgrest/Table.cs b/Postgrest/Table.cs index 47c2732..ed38f65 100644 --- a/Postgrest/Table.cs +++ b/Postgrest/Table.cs @@ -144,6 +144,9 @@ public IPostgrestTable Filter(string columnName, Operator op case int intCriterion: _filters.Add(new QueryFilter(columnName, op, intCriterion)); return this; + case long longCriterion: + _filters.Add(new QueryFilter(columnName, op, longCriterion)); + return this; case float floatCriterion: _filters.Add(new QueryFilter(columnName, op, floatCriterion)); return this; @@ -159,9 +162,15 @@ public IPostgrestTable Filter(string columnName, Operator op case FullTextSearchConfig fullTextSearchCriteria: _filters.Add(new QueryFilter(columnName, op, fullTextSearchCriteria)); return this; + case DateTime dtSearchCriteria: + _filters.Add(new QueryFilter(columnName, op, dtSearchCriteria)); + return this; + case DateTimeOffset dtoSearchCriteria: + _filters.Add(new QueryFilter(columnName, op, dtoSearchCriteria)); + return this; default: throw new PostgrestException( - "Unknown criterion type, is it of type `string`, `int`, `float`, `List`, `Dictionary`, `FullTextSearchConfig`, or `Range`?") + "Unknown criterion type, is it of type `string`, `int`, `long`, `float`, `List`, `DateTime`, `DateTimeOffset`, `Dictionary`, `FullTextSearchConfig`, or `Range`?") { Reason = FailureHint.Reason.InvalidArgument }; diff --git a/PostgrestTests/ClientTests.cs b/PostgrestTests/ClientTests.cs index b3541b3..bf6e08f 100644 --- a/PostgrestTests/ClientTests.cs +++ b/PostgrestTests/ClientTests.cs @@ -959,6 +959,37 @@ public async Task TestMatchFilter() CollectionAssert.AreEqual(expected, filteredResponse.Models); } + [TestMethod("filters: dt")] + public async Task TestDateTimeFilter() + { + var client = new Client(BaseUrl); + var filteredResponse = await client.Table().Filter("created_at", Operator.GreaterThan, new DateTime(2022, 08, 20)) + .Filter("created_at", Operator.LessThan, new DateTime(2022, 08, 21)) + .Get(); + Assert.AreEqual(1, filteredResponse.Models.Count); + Assert.AreEqual("ea07bd86-a507-4c68-9545-b848bfe74c90", filteredResponse.Models[0].Id); + } + + [TestMethod("filters: dto")] + public async Task TestDateTimeOffsetFilter() + { + var client = new Client(BaseUrl); + var filteredResponse = await client.Table().Filter("created_at", Operator.GreaterThan, new DateTimeOffset(new DateTime(2022, 08, 20))) + .Filter("created_at", Operator.LessThan, new DateTimeOffset(new DateTime(2022, 08, 21))) + .Get(); + Assert.AreEqual(1, filteredResponse.Models.Count); + Assert.AreEqual("ea07bd86-a507-4c68-9545-b848bfe74c90", filteredResponse.Models[0].Id); + } + + [TestMethod("filters: long")] + public async Task TestLongIntFilter() + { + var client = new Client(BaseUrl); + var filteredResponse = await client.Table().Filter("long_value", Operator.Equals, 2147483648L) + .Get(); + Assert.AreEqual(1, filteredResponse.Models.Count); + } + [TestMethod("select: basic")] public async Task TestSelect() { diff --git a/PostgrestTests/Models/KitchenSink.cs b/PostgrestTests/Models/KitchenSink.cs index e3031bb..1380d53 100644 --- a/PostgrestTests/Models/KitchenSink.cs +++ b/PostgrestTests/Models/KitchenSink.cs @@ -21,6 +21,8 @@ public class KitchenSink : BaseModel [Column("int_value")] public int? IntValue { get; set; } + [Column("long_value")] public long? LongValue { get; set; } + [Column("float_value")] public float FloatValue { get; set; } [Column("double_value")] public double DoubleValue { get; set; } diff --git a/PostgrestTests/db/00-schema.sql b/PostgrestTests/db/00-schema.sql index f71d0b3..b434221 100644 --- a/PostgrestTests/db/00-schema.sql +++ b/PostgrestTests/db/00-schema.sql @@ -57,6 +57,7 @@ create table "public"."kitchen_sink" "bool_value" BOOL DEFAULT false, "unique_value" varchar(255) UNIQUE, "int_value" INT null, + "long_value" BIGINT null, "float_value" FLOAT null, "double_value" DOUBLE PRECISION null, "datetime_value" timestamp null, diff --git a/PostgrestTests/db/01-dummy-data.sql b/PostgrestTests/db/01-dummy-data.sql index 2fedd2b..b283836 100644 --- a/PostgrestTests/db/01-dummy-data.sql +++ b/PostgrestTests/db/01-dummy-data.sql @@ -25,6 +25,7 @@ INSERT INTO public.kitchen_sink (id, string_value, bool_value, int_value, + long_value, float_value, double_value, datetime_value, @@ -41,6 +42,7 @@ VALUES ('f3ff356d-5803-43a7-b125-ba10cf10fdcd', 'Im the Kitchen Sink!', false, 99999, + 2147483648, '99999.0'::float4, '99999.0'::float8, 'Tue May 24 06:30:00 2022'::timestamp,