notion_ruby_mapping 0.2.2 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +503 -148
  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 +129 -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/mention_object.rb +26 -1
  20. data/lib/notion_ruby_mapping/multi_select_property.rb +83 -21
  21. data/lib/notion_ruby_mapping/notion_cache.rb +17 -13
  22. data/lib/notion_ruby_mapping/number_property.rb +71 -10
  23. data/lib/notion_ruby_mapping/page.rb +32 -10
  24. data/lib/notion_ruby_mapping/payload.rb +21 -3
  25. data/lib/notion_ruby_mapping/people_property.rb +47 -19
  26. data/lib/notion_ruby_mapping/phone_number_property.rb +26 -15
  27. data/lib/notion_ruby_mapping/property.rb +142 -49
  28. data/lib/notion_ruby_mapping/property_cache.rb +31 -3
  29. data/lib/notion_ruby_mapping/query.rb +10 -0
  30. data/lib/notion_ruby_mapping/relation_property.rb +74 -21
  31. data/lib/notion_ruby_mapping/rich_text_array.rb +81 -0
  32. data/lib/notion_ruby_mapping/rich_text_object.rb +58 -1
  33. data/lib/notion_ruby_mapping/rich_text_property.rb +12 -1
  34. data/lib/notion_ruby_mapping/rollup_property.rb +82 -10
  35. data/lib/notion_ruby_mapping/select_property.rb +88 -13
  36. data/lib/notion_ruby_mapping/text_object.rb +0 -51
  37. data/lib/notion_ruby_mapping/text_property.rb +19 -45
  38. data/lib/notion_ruby_mapping/title_property.rb +12 -1
  39. data/lib/notion_ruby_mapping/url_property.rb +26 -15
  40. data/lib/notion_ruby_mapping/user_object.rb +4 -4
  41. data/lib/notion_ruby_mapping/version.rb +1 -1
  42. data/lib/notion_ruby_mapping.rb +2 -1
  43. data/tools/an +103 -0
  44. metadata +7 -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
@@ -20,69 +91,83 @@ module NotionRubyMapping
20
91
  def make_filter_query(key, value, rollup = nil, rollup_type = nil)
21
92
  if rollup
22
93
  Query.new filter: {"property" => @name, rollup => {rollup_type => {key => value}}}
94
+ elsif @name == "__timestamp__"
95
+ Query.new filter: {"timestamp" => type, type => {key => value}}
23
96
  else
24
97
  Query.new filter: {"property" => @name, type => {key => value}}
25
98
  end
26
99
  end
27
100
 
101
+ # @return [TrueClass, FalseClass] true if page property
102
+ def page?
103
+ @base_type == :page
104
+ end
105
+
106
+ # @param [Hash] json
107
+ def update_from_json(json)
108
+ @will_update = false
109
+ @json = json[type]
110
+ end
111
+
28
112
  # @return [Symbol] property type
29
113
  def type
30
114
  self.class::TYPE
31
115
  end
32
116
 
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?
117
+ ## Database property only methods
118
+
119
+ # @param [Symbol, nil] method
120
+ def assert_database_property(method)
121
+ raise StandardError, "#{method} can execute only Database property." unless database?
122
+ end
123
+
124
+ # @return [Hash]
125
+ def property_schema_json
126
+ assert_database_property __method__
127
+ {@name => {type => property_schema_json_sub}}
128
+ end
38
129
 
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"]
130
+ # @return [Hash]
131
+ def update_property_schema_json
132
+ assert_database_property __method__
133
+ if @remove
134
+ {@name => nil}
135
+ elsif @new_name
136
+ {@name => {"name" => @new_name}}
78
137
  else
79
- raise StandardError, "Irregular property type: #{input_json["type"]}"
138
+ {}
80
139
  end
81
140
  end
141
+
142
+ ## Page property only methods
143
+
144
+ # @param [Symbol, nil] method
145
+ def assert_page_property(method)
146
+ raise StandardError, "#{method} can execute only Page property." unless @base_type == :page
147
+ end
148
+
149
+ ## Page property only methods
150
+
151
+ # @return [Hash] {} created_time cannot be updated
152
+ def property_values_json
153
+ assert_page_property __method__
154
+ {}
155
+ end
156
+
157
+ protected
158
+
159
+ ## Database property only methods
160
+
161
+ # @return [Hash]
162
+ def property_schema_json_sub
163
+ {}
164
+ end
82
165
  end
83
166
 
84
167
  # module for make query of equals and does_not_equal
85
168
  module EqualsDoesNotEqual
169
+ ### Public announced methods
170
+
86
171
  # @param [String, Number] value Query value
87
172
  # @return [NotionRubyMapping::Query] generated Query object
88
173
  def filter_equals(value, rollup = nil, rollup_type = nil)
@@ -98,6 +183,8 @@ module NotionRubyMapping
98
183
 
99
184
  # module for make query of contains and does_not_contain
100
185
  module ContainsDoesNotContain
186
+ ### Public announced methods
187
+
101
188
  # @param [String] value Query value
102
189
  # @return [NotionRubyMapping::Query] generated Query object
103
190
  def filter_contains(value, rollup = nil, rollup_type = nil)
@@ -113,6 +200,8 @@ module NotionRubyMapping
113
200
 
114
201
  # module for make query of starts_with and ends_with
115
202
  module StartsWithEndsWith
203
+ ### Public announced methods
204
+
116
205
  # @param [String] value Query value
117
206
  # @return [NotionRubyMapping::Query] generated Query object
118
207
  def filter_starts_with(value, rollup = nil, rollup_type = nil)
@@ -128,6 +217,8 @@ module NotionRubyMapping
128
217
 
129
218
  # module for make query of is_empty and is_not_empty
130
219
  module IsEmptyIsNotEmpty
220
+ ### Public announced methods
221
+
131
222
  # @return [NotionRubyMapping::Query] generated Query object
132
223
  def filter_is_empty(rollup = nil, rollup_type = nil)
133
224
  make_filter_query "is_empty", true, rollup, rollup_type
@@ -141,6 +232,8 @@ module NotionRubyMapping
141
232
 
142
233
  # module for make query of starts_with and ends_with
143
234
  module GreaterThanLessThan
235
+ ### Public announced methods
236
+
144
237
  # @param [Number] value Query value
145
238
  # @return [NotionRubyMapping::Query] generated Query object
146
239
  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