Skip to content

Commit 433daa6

Browse files
Merge pull request #264 from notion-dotnet/247-add-rollup-property-filter
add rollup property filter ✨
2 parents e85fbca + 4ecab19 commit 433daa6

16 files changed

+85
-19
lines changed

Src/Notion.Client/Models/Filters/CheckboxFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
namespace Notion.Client
55
{
6-
public class CheckboxFilter : SinglePropertyFilter
6+
public class CheckboxFilter : SinglePropertyFilter, IRollupSubPropertyFilter
77
{
88
[JsonProperty("checkbox")]
99
public Condition Checkbox { get; set; }

Src/Notion.Client/Models/Filters/DateFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
namespace Notion.Client
77
{
8-
public class DateFilter : SinglePropertyFilter
8+
public class DateFilter : SinglePropertyFilter, IRollupSubPropertyFilter
99
{
1010
[JsonProperty("date")]
1111
public Condition Date { get; set; }

Src/Notion.Client/Models/Filters/FilesFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Notion.Client
44
{
5-
public class FilesFilter : SinglePropertyFilter
5+
public class FilesFilter : SinglePropertyFilter, IRollupSubPropertyFilter
66
{
77
[JsonProperty("files")]
88
public Condition Files { get; set; }

Src/Notion.Client/Models/Filters/MultiSelectFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Notion.Client
44
{
5-
public class MultiSelectFilter : SinglePropertyFilter
5+
public class MultiSelectFilter : SinglePropertyFilter, IRollupSubPropertyFilter
66
{
77
[JsonProperty("multi_select")]
88
public Condition MultiSelect { get; set; }

Src/Notion.Client/Models/Filters/NumberFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Notion.Client
44
{
5-
public class NumberFilter : SinglePropertyFilter
5+
public class NumberFilter : SinglePropertyFilter, IRollupSubPropertyFilter
66
{
77
[JsonProperty("number")]
88
public Condition Number { get; set; }

Src/Notion.Client/Models/Filters/PeopleFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Notion.Client
44
{
5-
public class PeopleFilter : SinglePropertyFilter
5+
public class PeopleFilter : SinglePropertyFilter, IRollupSubPropertyFilter
66
{
77
[JsonProperty("people")]
88
public Condition People { get; set; }

Src/Notion.Client/Models/Filters/RelationFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Notion.Client
44
{
5-
public class RelationFilter : SinglePropertyFilter
5+
public class RelationFilter : SinglePropertyFilter, IRollupSubPropertyFilter
66
{
77
[JsonProperty("relation")]
88
public Condition Relation { get; set; }

Src/Notion.Client/Models/Filters/RichTextFilter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Notion.Client
44
{
5-
public class RichTextFilter : SinglePropertyFilter
5+
public class RichTextFilter : SinglePropertyFilter, IRollupSubPropertyFilter
66
{
77
[JsonProperty("rich_text")]
88
public TextFilter.Condition RichText { get; set; }
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
namespace Notion.Client
2+
{
3+
public interface IRollupSubPropertyFilter
4+
{
5+
}
6+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
using Newtonsoft.Json;
2+
3+
namespace Notion.Client
4+
{
5+
public class RollupFilter : SinglePropertyFilter
6+
{
7+
[JsonProperty("rollup")]
8+
public Condition Rollup { get; set; }
9+
10+
public RollupFilter(
11+
string propertyName
12+
, IRollupSubPropertyFilter any = null
13+
, IRollupSubPropertyFilter none = null
14+
, IRollupSubPropertyFilter every = null
15+
, DateFilter.Condition date = null
16+
, NumberFilter.Condition number = null)
17+
{
18+
Property = propertyName;
19+
Rollup = new Condition(
20+
any,
21+
none,
22+
every,
23+
date,
24+
number
25+
);
26+
}
27+
28+
public class Condition
29+
{
30+
public Condition(
31+
IRollupSubPropertyFilter any = null
32+
, IRollupSubPropertyFilter none = null
33+
, IRollupSubPropertyFilter every = null
34+
, DateFilter.Condition date = null
35+
, NumberFilter.Condition number = null)
36+
{
37+
Any = any;
38+
None = none;
39+
Every = every;
40+
Date = date;
41+
Number = number;
42+
}
43+
44+
[JsonProperty("any")]
45+
public IRollupSubPropertyFilter Any { get; set; }
46+
47+
[JsonProperty("none")]
48+
public IRollupSubPropertyFilter None { get; set; }
49+
50+
[JsonProperty("every")]
51+
public IRollupSubPropertyFilter Every { get; set; }
52+
53+
[JsonProperty("date")]
54+
public DateFilter.Condition Date { get; set; }
55+
56+
[JsonProperty("number")]
57+
public NumberFilter.Condition Number { get; set; }
58+
}
59+
}
60+
}

0 commit comments

Comments
 (0)