notion_ruby_mapping 0.2.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +416 -135
  3. data/env.yml.sample +1 -0
  4. data/examples/change_title.md +26 -0
  5. data/examples/renumbering_pages.md +20 -0
  6. data/examples/set_icon_to_all_icon_unsettled_pages.md +30 -0
  7. data/lib/notion_ruby_mapping/base.rb +124 -71
  8. data/lib/notion_ruby_mapping/checkbox_property.rb +27 -12
  9. data/lib/notion_ruby_mapping/created_by_property.rb +22 -10
  10. data/lib/notion_ruby_mapping/created_time_property.rb +16 -14
  11. data/lib/notion_ruby_mapping/database.rb +74 -10
  12. data/lib/notion_ruby_mapping/date_property.rb +67 -42
  13. data/lib/notion_ruby_mapping/email_property.rb +26 -16
  14. data/lib/notion_ruby_mapping/files_property.rb +40 -24
  15. data/lib/notion_ruby_mapping/formula_property.rb +51 -10
  16. data/lib/notion_ruby_mapping/last_edited_by_property.rb +22 -9
  17. data/lib/notion_ruby_mapping/last_edited_time_property.rb +16 -14
  18. data/lib/notion_ruby_mapping/list.rb +3 -0
  19. data/lib/notion_ruby_mapping/multi_select_property.rb +83 -21
  20. data/lib/notion_ruby_mapping/notion_cache.rb +17 -13
  21. data/lib/notion_ruby_mapping/number_property.rb +71 -10
  22. data/lib/notion_ruby_mapping/page.rb +32 -10
  23. data/lib/notion_ruby_mapping/payload.rb +21 -3
  24. data/lib/notion_ruby_mapping/people_property.rb +47 -19
  25. data/lib/notion_ruby_mapping/phone_number_property.rb +26 -15
  26. data/lib/notion_ruby_mapping/property.rb +140 -49
  27. data/lib/notion_ruby_mapping/property_cache.rb +31 -3
  28. data/lib/notion_ruby_mapping/query.rb +10 -0
  29. data/lib/notion_ruby_mapping/relation_property.rb +74 -21
  30. data/lib/notion_ruby_mapping/rich_text_array.rb +81 -0
  31. data/lib/notion_ruby_mapping/rich_text_object.rb +1 -0
  32. data/lib/notion_ruby_mapping/rich_text_property.rb +12 -1
  33. data/lib/notion_ruby_mapping/rollup_property.rb +82 -10
  34. data/lib/notion_ruby_mapping/select_property.rb +88 -13
  35. data/lib/notion_ruby_mapping/text_object.rb +0 -2
  36. data/lib/notion_ruby_mapping/text_property.rb +19 -45
  37. data/lib/notion_ruby_mapping/title_property.rb +12 -1
  38. data/lib/notion_ruby_mapping/url_property.rb +26 -15
  39. data/lib/notion_ruby_mapping/user_object.rb +4 -4
  40. data/lib/notion_ruby_mapping/version.rb +1 -1
  41. data/lib/notion_ruby_mapping.rb +2 -1
  42. metadata +6 -2
@@ -8,28 +8,89 @@ module NotionRubyMapping
8
8
  include IsEmptyIsNotEmpty
9
9
  TYPE = "number"
10
10
 
11
+ ### Public announced methods
12
+
13
+ ## Common methods
14
+
15
+ # @return [Numeric, Hash]
16
+ def number
17
+ @json
18
+ end
19
+
20
+ ## Database property only methods
21
+
22
+ # @return [String] new or settled format
23
+ def format
24
+ assert_database_property __method__
25
+ @json["format"]
26
+ end
27
+
28
+ # @param [String] format
29
+ # @return [String] settled format
30
+ def format=(format)
31
+ assert_database_property __method__
32
+ @will_update = true
33
+ @json["format"] = format
34
+ end
35
+
36
+ ## Page property only methods
37
+
38
+ # @param [Numeric] num
39
+ # @return [Numeric] settled number
40
+ def number=(num)
41
+ assert_page_property __method__
42
+ @will_update = true
43
+ @json = num
44
+ end
45
+
46
+ ### Not public announced methods
47
+
48
+ ## Common methods
49
+
11
50
  # @param [String] name Property name
12
- # @param [Float, Integer] number Number value (optional)
13
- def initialize(name, will_update: false, number: nil)
14
- super name, will_update: will_update
15
- @number = number
51
+ # @param [Float, Integer, Hash] json Number value or format Hash
52
+ def initialize(name, will_update: false, base_type: :page, json: nil, format: nil)
53
+ super name, will_update: will_update, base_type: base_type
54
+ @json = json
55
+ @json ||= {"format" => (format || "number")} if database?
16
56
  end
17
- attr_reader :number
18
57
 
19
58
  # @param [Hash] json
59
+ # @return [NotionRubyMapping::NumberProperty]
20
60
  def update_from_json(json)
21
61
  @will_update = false
22
- @number = json["number"]
62
+ @json = json["number"]
63
+ self
64
+ end
65
+
66
+ ## Database property only methods
67
+
68
+ # @return [Hash]
69
+ def update_property_schema_json
70
+ assert_database_property __method__
71
+ ans = super
72
+ return ans if ans != {} || !@will_update
73
+
74
+ ans[@name] ||= {}
75
+ ans[@name]["number"] = @json
76
+ ans
23
77
  end
24
78
 
79
+ ## Page property only methods
80
+
25
81
  # @return [Hash]
26
82
  def property_values_json
27
- {@name => {"number" => @number, "type" => "number"}}
83
+ assert_page_property __method__
84
+ {@name => {"number" => @json, "type" => "number"}}
28
85
  end
29
86
 
30
- def number=(num)
31
- @will_update = true
32
- @number = num
87
+ protected
88
+
89
+ ## Database property only methods
90
+
91
+ # @return [Hash]
92
+ def property_schema_json_sub
93
+ {"format" => format}
33
94
  end
34
95
  end
35
96
  end
@@ -3,26 +3,48 @@
3
3
  module NotionRubyMapping
4
4
  # Notion page object
5
5
  class Page < Base
6
- def self.find(id)
7
- NotionCache.instance.page id
8
- end
6
+ ### Public announced methods
9
7
 
10
- # @return [NotionRubyMapping::Base]46G
11
- def update
12
- update_json @nc.update_page_request(@id, property_values_json)
8
+ # @param [String] id
9
+ # @return [NotionRubyMapping::Page, String]
10
+ def self.find(id, dry_run: false)
11
+ nc = NotionCache.instance
12
+ if dry_run
13
+ Base.dry_run_script :get, nc.page_path(id)
14
+ else
15
+ nc.page id
16
+ end
13
17
  end
14
18
 
15
- # @return [NotionRubyMapping::Base]
16
- def create
17
- @new_record = false
18
- update_json @nc.create_page_request(property_values_json)
19
+ def create_child_database(title, *assign)
20
+ Database.new json: {"title" => [TextObject.new(title).property_values_json]},
21
+ assign: assign, parent: {"type" => "page_id", "page_id" => @id}
19
22
  end
20
23
 
21
24
  protected
22
25
 
26
+ # @return [NotionRubyMapping::Base, String]
27
+ def create(dry_run: false)
28
+ if dry_run
29
+ dry_run_script :post, @nc.pages_path, :property_values_json
30
+ else
31
+ @new_record = false
32
+ update_json @nc.create_page_request(property_values_json)
33
+ end
34
+ end
35
+
23
36
  # @return [Hash]
24
37
  def reload_json
25
38
  @nc.page_request @id
26
39
  end
40
+
41
+ # @return [NotionRubyMapping::Base, String]
42
+ def update(dry_run: false)
43
+ if dry_run
44
+ dry_run_script :patch, @nc.page_path(@id), :property_values_json
45
+ else
46
+ update_json @nc.update_page_request(@id, property_values_json)
47
+ end
48
+ end
27
49
  end
28
50
  end
@@ -22,10 +22,28 @@ module NotionRubyMapping
22
22
  self
23
23
  end
24
24
 
25
+ # @param [Hash] json
26
+ def merge_property(json)
27
+ @json["properties"] ||= {}
28
+ @json["properties"].merge!(json)
29
+ end
30
+
31
+ # @return [Hash] created json
32
+ # @param [Object] others
33
+ def property_values_json(*others)
34
+ others.compact.reduce({}) { |hash, o| hash.merge o.property_values_json }.merge @json
35
+ end
36
+
37
+ # @return [Hash] created json
38
+ # @param [Object] others
39
+ def property_schema_json(*others)
40
+ others.compact.reduce({}) { |hash, o| hash.merge o.property_schema_json }.merge @json
41
+ end
42
+
25
43
  # @return [Hash] created json
26
- # @param [Hash] optional_json
27
- def property_values_json(optional_json = nil)
28
- @json.merge(optional_json || {})
44
+ # @param [Object] others
45
+ def update_property_schema_json(*others)
46
+ others.compact.reduce({}) { |hash, o| hash.merge o.update_property_schema_json }.merge @json
29
47
  end
30
48
 
31
49
  # @return [Hash] {}
@@ -5,41 +5,69 @@ module NotionRubyMapping
5
5
  class PeopleProperty < MultiProperty
6
6
  TYPE = "people"
7
7
 
8
+ ### Public announced methods
9
+
10
+ ## Common methods
11
+
12
+ # @return [Array, Hash]
13
+ def people
14
+ @json
15
+ end
16
+
17
+ ## Page property only methods
18
+
19
+ # @param [String, NotionRubyMapping::UserObject] user_or_user_id
20
+ # @return [Array<UserObject>]
21
+ def add_person(user_or_user_id)
22
+ @will_update = true
23
+ @json << UserObject.user_object(user_or_user_id)
24
+ end
25
+
26
+ # @param [Hash] people
27
+ # @return [Array, nil] replaced array
28
+ def people=(people)
29
+ @will_update = true
30
+ @json = people ? Array(people).map { |uo| UserObject.user_object(uo) } : []
31
+ end
32
+
33
+ ### Not public announced methods
34
+
35
+ ## Common methods
36
+
8
37
  # @param [String] name
9
38
  # @param [Hash] json
10
39
  # @param [Array] people ids for people
11
- def initialize(name, will_update: false, json: nil, people: nil)
12
- super name, will_update: will_update
13
- @people = if people
14
- Array(people).map { |uo| UserObject.user_object(uo) }
15
- elsif json
16
- json.map { |p| UserObject.new json: p }
17
- else
18
- []
19
- end
40
+ def initialize(name, will_update: false, base_type: :page, json: nil, people: nil)
41
+ super name, will_update: will_update, base_type: base_type
42
+ @json = if database?
43
+ {}
44
+ elsif people
45
+ Array(people).map { |uo| UserObject.user_object(uo) }
46
+ elsif json
47
+ json.map { |p| UserObject.new json: p }
48
+ else
49
+ []
50
+ end
20
51
  end
21
52
 
53
+ ## Page property only methods
54
+
22
55
  # @return [Hash] created json
23
56
  def property_values_json
57
+ assert_page_property __method__
24
58
  {
25
59
  @name => {
26
60
  "type" => "people",
27
- "people" => @people.map(&:property_values_json),
61
+ "people" => @json.map(&:property_values_json),
28
62
  },
29
63
  }
30
64
  end
31
65
 
32
- # @param [Hash] json
66
+ # @param [Array] json
67
+ # @return [Hash, Array]
33
68
  def update_from_json(json)
34
69
  @will_update = false
35
- @people = json["people"].map { |pjson| UserObject.new json: pjson }
36
- end
37
-
38
- # @param [Hash] people
39
- # @return [Array, nil] settled array
40
- def people=(people)
41
- @will_update = true
42
- @people = people ? Array(people).map { |uo| UserObject.user_object(uo) } : []
70
+ @json = database? ? {} : json["people"].map { |p_json| UserObject.new json: p_json }
43
71
  end
44
72
  end
45
73
  end
@@ -9,28 +9,39 @@ module NotionRubyMapping
9
9
  include IsEmptyIsNotEmpty
10
10
  TYPE = "phone_number"
11
11
 
12
+ ### Public announced methods
13
+
14
+ ## Common methods
15
+
16
+ # @return [String, Hash, nil] phone number (Page), {} (Database)
17
+ def phone_number
18
+ @json
19
+ end
20
+
21
+ ## Page property only methods
22
+
23
+ def phone_number=(phone_number)
24
+ @will_update = true
25
+ @json = phone_number
26
+ end
27
+
28
+ ### Not public announced methods
29
+
30
+ ## Common methods
31
+
12
32
  # @param [String] name Property name
13
33
  # @param [String] phone_number phone_number value (optional)
14
- def initialize(name, will_update: false, phone_number: nil)
15
- super name, will_update: will_update
16
- @phone_number = phone_number
34
+ def initialize(name, will_update: false, base_type: :page, json: nil)
35
+ super name, will_update: will_update, base_type: base_type
36
+ @json = database? ? {} : json
17
37
  end
18
- attr_reader :phone_number
19
38
 
20
- # @param [Hash] json
21
- def update_from_json(json)
22
- @will_update = false
23
- @phone_number = json["phone_number"]
24
- end
39
+ ## Page property only methods
25
40
 
26
41
  # @return [Hash]
27
42
  def property_values_json
28
- {@name => {"phone_number" => @phone_number, "type" => "phone_number"}}
29
- end
30
-
31
- def phone_number=(phone_number)
32
- @will_update = true
33
- @phone_number = phone_number
43
+ assert_page_property __method__
44
+ {@name => {"phone_number" => @json, "type" => "phone_number"}}
34
45
  end
35
46
  end
36
47
  end
@@ -3,16 +3,87 @@
3
3
  module NotionRubyMapping
4
4
  # abstract class for property
5
5
  class Property
6
+ ### Public announced methods
7
+
8
+ ## Common methods
9
+
10
+ attr_reader :name, :will_update
11
+
12
+ ## Database property only methods
13
+
14
+ # @param [String] new_name
15
+ def new_name=(new_name)
16
+ assert_database_property __method__
17
+ @will_update = true
18
+ @new_name = new_name
19
+ end
20
+
21
+ # @return [NotionRubyMapping::Property] self
22
+ def remove
23
+ assert_database_property __method__
24
+ @will_update = true
25
+ @remove = true
26
+ self
27
+ end
28
+
29
+ ### Not public announced methods
30
+
31
+ ## Common methods
32
+
6
33
  # @param [String] name Property name
7
34
  # @return [Property] generated Property object
8
- def initialize(name, will_update: false)
35
+ def initialize(name, will_update: false, base_type: :page)
9
36
  @name = name
10
37
  @will_update = will_update
38
+ @base_type = base_type
39
+ @create = false
40
+ @remove = false
41
+ @new_name = nil
42
+ @json = nil
43
+ end
44
+
45
+ # @param [String] name
46
+ # @param [Hash] input_json
47
+ # @return [NotionRubyMapping::Property, nil] generated Property object
48
+ def self.create_from_json(name, input_json, base_type = :page)
49
+ raise StandardError, "Property not found: #{name}:#{input_json}" if input_json.nil?
50
+
51
+ type = input_json["type"]
52
+ klass = {
53
+ "checkbox" => CheckboxProperty,
54
+ "created_time" => CreatedTimeProperty,
55
+ "date" => DateProperty,
56
+ "formula" => FormulaProperty,
57
+ "last_edited_time" => LastEditedTimeProperty,
58
+ "rollup" => RollupProperty,
59
+ "email" => EmailProperty,
60
+ "files" => FilesProperty,
61
+ "created_by" => CreatedByProperty,
62
+ "last_edited_by" => LastEditedByProperty,
63
+ "multi_select" => MultiSelectProperty,
64
+ "people" => PeopleProperty,
65
+ "relation" => RelationProperty,
66
+ "number" => NumberProperty,
67
+ "phone_number" => PhoneNumberProperty,
68
+ "select" => SelectProperty,
69
+ "title" => TitleProperty,
70
+ "rich_text" => RichTextProperty,
71
+ "url" => UrlProperty,
72
+ }[type]
73
+ raise StandardError, "Irregular property type: #{type}" unless klass
74
+
75
+ klass.new name, json: input_json[type], base_type: base_type
11
76
  end
12
- attr_reader :name
13
77
 
14
- # @return [TrueClass, FalseClass]
15
- attr_reader :will_update
78
+ # @return [FalseClass]
79
+ def clear_will_update
80
+ @will_update = false
81
+ end
82
+
83
+ # @return [TrueClass, FalseClass] true if database property
84
+ def database?
85
+ @base_type == :database
86
+ end
16
87
 
17
88
  # @param [String] key query parameter
18
89
  # @param [Object] value query value
@@ -25,64 +96,76 @@ module NotionRubyMapping
25
96
  end
26
97
  end
27
98
 
99
+ # @return [TrueClass, FalseClass] true if page property
100
+ def page?
101
+ @base_type == :page
102
+ end
103
+
104
+ # @param [Hash] json
105
+ def update_from_json(json)
106
+ @will_update = false
107
+ @json = json[type]
108
+ end
109
+
28
110
  # @return [Symbol] property type
29
111
  def type
30
112
  self.class::TYPE
31
113
  end
32
114
 
33
- # @param [String] name
34
- # @param [Hash] input_json
35
- # @return [NotionRubyMapping::Property, nil] generated Property object
36
- def self.create_from_json(name, input_json)
37
- raise StandardError, "Property not found: #{name}:#{input_json}" if input_json.nil?
115
+ ## Database property only methods
116
+
117
+ # @param [Symbol, nil] method
118
+ def assert_database_property(method)
119
+ raise StandardError, "#{method} can execute only Database property." unless database?
120
+ end
121
+
122
+ # @return [Hash]
123
+ def property_schema_json
124
+ assert_database_property __method__
125
+ {@name => {type => property_schema_json_sub}}
126
+ end
38
127
 
39
- case input_json["type"]
40
- when "number"
41
- NumberProperty.new name, number: input_json["number"]
42
- when "select"
43
- SelectProperty.new name, json: input_json["select"]
44
- when "multi_select"
45
- MultiSelectProperty.new name, json: input_json["multi_select"]
46
- when "date"
47
- DateProperty.new name, json: input_json["date"]
48
- when "title"
49
- TitleProperty.new name, json: input_json["title"]
50
- when "rich_text"
51
- RichTextProperty.new name, json: input_json["rich_text"]
52
- when "checkbox"
53
- CheckboxProperty.new name, checkbox: input_json["checkbox"]
54
- when "people"
55
- PeopleProperty.new name, json: input_json["people"]
56
- when "email"
57
- EmailProperty.new name, email: input_json["email"]
58
- when "url"
59
- UrlProperty.new name, url: input_json["url"]
60
- when "phone_number"
61
- PhoneNumberProperty.new name, phone_number: input_json["phone_number"]
62
- when "files"
63
- FilesProperty.new name, json: input_json["files"]
64
- when "created_time"
65
- CreatedTimeProperty.new name, created_time: input_json["created_time"]
66
- when "last_edited_time"
67
- LastEditedTimeProperty.new name, last_edited_time: input_json["last_edited_time"]
68
- when "created_by"
69
- CreatedByProperty.new name, json: input_json["created_by"]
70
- when "last_edited_by"
71
- LastEditedByProperty.new name, json: input_json["last_edited_by"]
72
- when "formula"
73
- FormulaProperty.new name, json: input_json["formula"]
74
- when "rollup"
75
- RollupProperty.new name, json: input_json["rollup"]
76
- when "relation"
77
- RelationProperty.new name, json: input_json["relation"]
128
+ # @return [Hash]
129
+ def update_property_schema_json
130
+ assert_database_property __method__
131
+ if @remove
132
+ {@name => nil}
133
+ elsif @new_name
134
+ {@name => {"name" => @new_name}}
78
135
  else
79
- raise StandardError, "Irregular property type: #{input_json["type"]}"
136
+ {}
80
137
  end
81
138
  end
139
+
140
+ ## Page property only methods
141
+
142
+ # @param [Symbol, nil] method
143
+ def assert_page_property(method)
144
+ raise StandardError, "#{method} can execute only Page property." unless @base_type == :page
145
+ end
146
+
147
+ ## Page property only methods
148
+
149
+ # @return [Hash] {} created_time cannot be updated
150
+ def property_values_json
151
+ assert_page_property __method__
152
+ {}
153
+ end
154
+
155
+ protected
156
+
157
+ ## Database property only methods
158
+
159
+ # @return [Hash]
160
+ def property_schema_json_sub
161
+ {}
162
+ end
82
163
  end
83
164
 
84
165
  # module for make query of equals and does_not_equal
85
166
  module EqualsDoesNotEqual
167
+ ### Public announced methods
168
+
86
169
  # @param [String, Number] value Query value
87
170
  # @return [NotionRubyMapping::Query] generated Query object
88
171
  def filter_equals(value, rollup = nil, rollup_type = nil)
@@ -98,6 +181,8 @@ module NotionRubyMapping
98
181
 
99
182
  # module for make query of contains and does_not_contain
100
183
  module ContainsDoesNotContain
184
+ ### Public announced methods
185
+
101
186
  # @param [String] value Query value
102
187
  # @return [NotionRubyMapping::Query] generated Query object
103
188
  def filter_contains(value, rollup = nil, rollup_type = nil)
@@ -113,6 +198,8 @@ module NotionRubyMapping
113
198
 
114
199
  # module for make query of starts_with and ends_with
115
200
  module StartsWithEndsWith
201
+ ### Public announced methods
202
+
116
203
  # @param [String] value Query value
117
204
  # @return [NotionRubyMapping::Query] generated Query object
118
205
  def filter_starts_with(value, rollup = nil, rollup_type = nil)
@@ -128,6 +215,8 @@ module NotionRubyMapping
128
215
 
129
216
  # module for make query of is_empty and is_not_empty
130
217
  module IsEmptyIsNotEmpty
218
+ ### Public announced methods
219
+
131
220
  # @return [NotionRubyMapping::Query] generated Query object
132
221
  def filter_is_empty(rollup = nil, rollup_type = nil)
133
222
  make_filter_query "is_empty", true, rollup, rollup_type
@@ -141,6 +230,8 @@ module NotionRubyMapping
141
230
 
142
231
  # module for make query of starts_with and ends_with
143
232
  module GreaterThanLessThan
233
+ ### Public announced methods
234
+
144
235
  # @param [Number] value Query value
145
236
  # @return [NotionRubyMapping::Query] generated Query object
146
237
  def filter_greater_than(value, rollup = nil, rollup_type = nil)
@@ -4,16 +4,17 @@ module NotionRubyMapping
4
4
  # PropertyCache class
5
5
  class PropertyCache
6
6
  include Enumerable
7
- def initialize(json = {})
7
+ def initialize(json = {}, base_type: :page)
8
8
  @properties = {}
9
9
  @json = json
10
+ @base_type = base_type
10
11
  end
11
12
  attr_writer :json
12
13
 
13
14
  # @param [String] key
14
15
  # @return [Property] Property for key
15
16
  def [](key)
16
- @properties[key] ||= Property.create_from_json key, @json[key]
17
+ @properties[key] ||= Property.create_from_json key, @json[key], @base_type
17
18
  end
18
19
 
19
20
  # @param [Array] key
@@ -44,7 +45,14 @@ module NotionRubyMapping
44
45
  self
45
46
  end
46
47
 
47
- # @return [Hash] created json
48
+
49
+ def clear_will_update
50
+ @properties.each do |_, property|
51
+ property.clear_will_update
52
+ end
53
+ end
54
+
55
+ # @return [Hash] created property values json
48
56
  def property_values_json
49
57
  @properties.each_with_object({}) do |(_, property), ans|
50
58
  if property.will_update
@@ -53,5 +61,25 @@ module NotionRubyMapping
53
61
  end
54
62
  end
55
63
  end
64
+
65
+ # @return [Hash] created property schema json
66
+ def property_schema_json
67
+ @properties.each_with_object({}) do |(_, property), ans|
68
+ if property.will_update
69
+ ans["properties"] ||= {}
70
+ ans["properties"].merge! property.property_schema_json
71
+ end
72
+ end
73
+ end
74
+
75
+ # @return [Hash] created update property schema json
76
+ def update_property_schema_json
77
+ @properties.each_with_object({}) do |(_, property), ans|
78
+ if property.will_update
79
+ ans["properties"] ||= {}
80
+ ans["properties"].merge! property.update_property_schema_json
81
+ end
82
+ end
83
+ end
56
84
  end
57
85
  end
@@ -49,5 +49,15 @@ module NotionRubyMapping
49
49
  @sort << {key => property.name, "direction" => "descending"}
50
50
  self
51
51
  end
52
+
53
+ # @return [Hash]
54
+ def query_json
55
+ parameters = {}
56
+ parameters[:filter] = filter unless filter.empty?
57
+ parameters[:sorts] = sort unless sort.empty?
58
+ parameters[:start_cursor] = start_cursor if start_cursor
59
+ parameters[:page_size] = page_size if page_size
60
+ parameters
61
+ end
52
62
  end
53
63
  end