notion_ruby_mapping 0.8.8 → 1.0.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 (93) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +12 -1
  3. data/README.md +1 -0
  4. data/lib/notion_ruby_mapping/blocks/base.rb +33 -33
  5. data/lib/notion_ruby_mapping/blocks/block.rb +48 -47
  6. data/lib/notion_ruby_mapping/blocks/bookmark_block.rb +1 -1
  7. data/lib/notion_ruby_mapping/blocks/breadcrumb_block.rb +1 -1
  8. data/lib/notion_ruby_mapping/blocks/bulleted_list_item_block.rb +1 -1
  9. data/lib/notion_ruby_mapping/blocks/callout_block.rb +10 -10
  10. data/lib/notion_ruby_mapping/blocks/child_base_block.rb +2 -2
  11. data/lib/notion_ruby_mapping/blocks/child_database_block.rb +3 -3
  12. data/lib/notion_ruby_mapping/blocks/child_page_block.rb +3 -3
  13. data/lib/notion_ruby_mapping/blocks/code_block.rb +7 -7
  14. data/lib/notion_ruby_mapping/blocks/column_block.rb +3 -3
  15. data/lib/notion_ruby_mapping/blocks/column_list_block.rb +2 -2
  16. data/lib/notion_ruby_mapping/blocks/database.rb +6 -6
  17. data/lib/notion_ruby_mapping/blocks/divider_block.rb +1 -1
  18. data/lib/notion_ruby_mapping/blocks/embed_block.rb +2 -2
  19. data/lib/notion_ruby_mapping/blocks/equation_block.rb +5 -5
  20. data/lib/notion_ruby_mapping/blocks/file_base_block.rb +2 -2
  21. data/lib/notion_ruby_mapping/blocks/file_block.rb +1 -1
  22. data/lib/notion_ruby_mapping/blocks/heading1_block.rb +4 -4
  23. data/lib/notion_ruby_mapping/blocks/heading2_block.rb +2 -2
  24. data/lib/notion_ruby_mapping/blocks/heading3_block.rb +3 -3
  25. data/lib/notion_ruby_mapping/blocks/image_block.rb +1 -1
  26. data/lib/notion_ruby_mapping/blocks/link_preview_block.rb +2 -2
  27. data/lib/notion_ruby_mapping/blocks/link_to_page_block.rb +5 -5
  28. data/lib/notion_ruby_mapping/blocks/list.rb +21 -20
  29. data/lib/notion_ruby_mapping/blocks/numbered_list_item_block.rb +2 -2
  30. data/lib/notion_ruby_mapping/blocks/page.rb +9 -10
  31. data/lib/notion_ruby_mapping/blocks/paragraph_block.rb +2 -2
  32. data/lib/notion_ruby_mapping/blocks/pdf_block.rb +2 -2
  33. data/lib/notion_ruby_mapping/blocks/quote_block.rb +1 -1
  34. data/lib/notion_ruby_mapping/blocks/synced_block.rb +5 -5
  35. data/lib/notion_ruby_mapping/blocks/table_block.rb +8 -8
  36. data/lib/notion_ruby_mapping/blocks/table_of_contents_block.rb +3 -3
  37. data/lib/notion_ruby_mapping/blocks/table_row_block.rb +3 -3
  38. data/lib/notion_ruby_mapping/blocks/template_block.rb +3 -3
  39. data/lib/notion_ruby_mapping/blocks/text_sub_block_color_base_block.rb +4 -4
  40. data/lib/notion_ruby_mapping/blocks/to_do_block.rb +4 -4
  41. data/lib/notion_ruby_mapping/blocks/toggle_block.rb +2 -2
  42. data/lib/notion_ruby_mapping/blocks/toggle_heading1_block.rb +2 -2
  43. data/lib/notion_ruby_mapping/blocks/toggle_heading2_block.rb +2 -2
  44. data/lib/notion_ruby_mapping/blocks/toggle_heading3_block.rb +3 -3
  45. data/lib/notion_ruby_mapping/blocks/url_base_block.rb +3 -3
  46. data/lib/notion_ruby_mapping/blocks/url_caption_base_block.rb +4 -4
  47. data/lib/notion_ruby_mapping/blocks/video_block.rb +2 -2
  48. data/lib/notion_ruby_mapping/controllers/discussion_thread.rb +1 -1
  49. data/lib/notion_ruby_mapping/controllers/mermaid_database.rb +34 -34
  50. data/lib/notion_ruby_mapping/controllers/notion_cache.rb +6 -8
  51. data/lib/notion_ruby_mapping/controllers/payload.rb +11 -11
  52. data/lib/notion_ruby_mapping/controllers/property_cache.rb +8 -7
  53. data/lib/notion_ruby_mapping/controllers/query.rb +10 -10
  54. data/lib/notion_ruby_mapping/controllers/search.rb +5 -6
  55. data/lib/notion_ruby_mapping/objects/comment_object.rb +2 -2
  56. data/lib/notion_ruby_mapping/objects/emoji_object.rb +3 -3
  57. data/lib/notion_ruby_mapping/objects/equation_object.rb +3 -3
  58. data/lib/notion_ruby_mapping/objects/file_object.rb +9 -9
  59. data/lib/notion_ruby_mapping/objects/mention_object.rb +43 -43
  60. data/lib/notion_ruby_mapping/objects/rich_text_object.rb +43 -43
  61. data/lib/notion_ruby_mapping/objects/text_object.rb +5 -5
  62. data/lib/notion_ruby_mapping/objects/user_object.rb +4 -4
  63. data/lib/notion_ruby_mapping/properties/button_property.rb +4 -4
  64. data/lib/notion_ruby_mapping/properties/checkbox_property.rb +3 -3
  65. data/lib/notion_ruby_mapping/properties/created_by_property.rb +3 -3
  66. data/lib/notion_ruby_mapping/properties/created_time_property.rb +2 -2
  67. data/lib/notion_ruby_mapping/properties/date_base_property.rb +14 -13
  68. data/lib/notion_ruby_mapping/properties/date_property.rb +17 -17
  69. data/lib/notion_ruby_mapping/properties/email_property.rb +3 -3
  70. data/lib/notion_ruby_mapping/properties/files_property.rb +16 -13
  71. data/lib/notion_ruby_mapping/properties/formula_property.rb +7 -7
  72. data/lib/notion_ruby_mapping/properties/last_edited_by_property.rb +2 -2
  73. data/lib/notion_ruby_mapping/properties/last_edited_time_property.rb +2 -2
  74. data/lib/notion_ruby_mapping/properties/multi_select_property.rb +15 -15
  75. data/lib/notion_ruby_mapping/properties/number_property.rb +9 -9
  76. data/lib/notion_ruby_mapping/properties/people_property.rb +6 -6
  77. data/lib/notion_ruby_mapping/properties/phone_number_property.rb +4 -4
  78. data/lib/notion_ruby_mapping/properties/property.rb +78 -74
  79. data/lib/notion_ruby_mapping/properties/relation_property.rb +18 -17
  80. data/lib/notion_ruby_mapping/properties/rich_text_property.rb +5 -5
  81. data/lib/notion_ruby_mapping/properties/rollup_property.rb +15 -15
  82. data/lib/notion_ruby_mapping/properties/select_property.rb +14 -14
  83. data/lib/notion_ruby_mapping/properties/status_property.rb +5 -5
  84. data/lib/notion_ruby_mapping/properties/text_property.rb +1 -1
  85. data/lib/notion_ruby_mapping/properties/title_property.rb +6 -6
  86. data/lib/notion_ruby_mapping/properties/unique_id_property.rb +3 -3
  87. data/lib/notion_ruby_mapping/properties/url_property.rb +3 -3
  88. data/lib/notion_ruby_mapping/properties/verification_property.rb +41 -0
  89. data/lib/notion_ruby_mapping/version.rb +1 -1
  90. data/lib/notion_ruby_mapping.rb +1 -1
  91. data/notion_ruby_mapping.gemspec +1 -2
  92. metadata +5 -22
  93. data/sig/notion_ruby_mapping.rbs +0 -4
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- #
2
+
3
3
  require "forwardable"
4
4
 
5
5
  module NotionRubyMapping
@@ -28,11 +28,11 @@ module NotionRubyMapping
28
28
 
29
29
  ## Database property only methods
30
30
 
31
- # @param [String] new_name
31
+ # @param [String, Symbol] new_name
32
32
  def new_name=(new_name)
33
33
  assert_database_property __method__
34
34
  @will_update = true
35
- @new_name = new_name
35
+ @new_name = new_name.to_sym
36
36
  end
37
37
 
38
38
  # @return [NotionRubyMapping::Property] self
@@ -47,10 +47,10 @@ module NotionRubyMapping
47
47
 
48
48
  ## Common methods
49
49
 
50
- # @param [String] name Property name
50
+ # @param [String, Symbol] name Property name
51
51
  # @return [Property] generated Property object
52
52
  def initialize(name, will_update: false, base_type: :page, property_id: nil, property_cache: nil, query: nil)
53
- @name = name
53
+ @name = name.to_sym
54
54
  @will_update = will_update
55
55
  @base_type = base_type
56
56
  @create = false
@@ -62,68 +62,72 @@ module NotionRubyMapping
62
62
  @query = query
63
63
  end
64
64
 
65
- # @param [String] name
65
+ # @param [String, Symbol] name
66
66
  # @param [Hash] input_json
67
67
  # @return [NotionRubyMapping::Property, nil] generated Property object
68
68
  # @param [Symbol] base_type :page or :database
69
69
  # @param [String, nil] page_id
70
70
  def self.create_from_json(name, input_json, base_type = :page, property_cache = nil, query = nil)
71
- raise StandardError, "Property not found: #{name}:#{input_json}" if input_json.nil?
71
+ name_sym = name.to_sym
72
+ raise StandardError, "Property not found: #{name_sym}:#{input_json}" if input_json.nil?
72
73
 
73
- type = input_json["type"]
74
+ type = input_json[:type]&.to_sym
74
75
  if type.nil?
75
- new name, property_id: input_json["id"], base_type: base_type, property_cache: property_cache, query: query
76
- elsif type == "property_item"
77
- tmp = new name, property_id: input_json["property_item"]["id"], base_type: base_type,
78
- property_cache: property_cache, query: query
76
+ new name_sym, property_id: input_json[:id], base_type: base_type, property_cache: property_cache, query: query
77
+ elsif type == :property_item
78
+ tmp = new name_sym, property_id: input_json[:property_item][:id], base_type: base_type,
79
+ property_cache: property_cache, query: query
79
80
  objects = List.new(json: input_json, type: :property, value: tmp, query: query).to_a
80
- case input_json["property_item"]["type"]
81
- when "people"
82
- PeopleProperty.new name, people: objects, base_type: base_type,
83
- property_cache: property_cache, query: query
84
- when "relation"
85
- RelationProperty.new name, relation: objects, base_type: base_type,
86
- property_cache: property_cache, query: query
87
- when "rich_text"
88
- RichTextProperty.new name, text_objects: objects, base_type: base_type,
89
- property_cache: property_cache, query: query
90
- when "rollup"
91
- RollupProperty.new name, json: objects, base_type: base_type,
92
- property_cache: property_cache, query: query
93
- when "title"
94
- TitleProperty.new name, text_objects: objects, base_type: base_type,
95
- property_cache: property_cache, query: query
81
+ case input_json[:property_item][:type]&.to_sym
82
+ when :people
83
+ PeopleProperty.new name_sym, people: objects, base_type: base_type,
84
+ property_cache: property_cache, query: query
85
+ when :relation
86
+ RelationProperty.new name_sym, relation: objects, base_type: base_type,
87
+ property_cache: property_cache, query: query
88
+ when :rich_text
89
+ RichTextProperty.new name_sym, text_objects: objects, base_type: base_type,
90
+ property_cache: property_cache, query: query
91
+ when :rollup
92
+ RollupProperty.new name_sym, json: objects, base_type: base_type,
93
+ property_cache: property_cache, query: query
94
+ when :title
95
+ TitleProperty.new name_sym, text_objects: objects, base_type: base_type,
96
+ property_cache: property_cache, query: query
97
+ else
98
+ raise StandardError, "Irregular property type: #{input_json[:property_item][:type]}"
96
99
  end
97
100
  else
98
101
  klass = {
99
- "button" => ButtonProperty,
100
- "checkbox" => CheckboxProperty,
101
- "created_time" => CreatedTimeProperty,
102
- "date" => DateProperty,
103
- "formula" => FormulaProperty,
104
- "last_edited_time" => LastEditedTimeProperty,
105
- "rollup" => RollupProperty,
106
- "email" => EmailProperty,
107
- "files" => FilesProperty,
108
- "created_by" => CreatedByProperty,
109
- "last_edited_by" => LastEditedByProperty,
110
- "multi_select" => MultiSelectProperty,
111
- "relation" => RelationProperty,
112
- "number" => NumberProperty,
113
- "people" => PeopleProperty,
114
- "phone_number" => PhoneNumberProperty,
115
- "select" => SelectProperty,
116
- "status" => StatusProperty,
117
- "title" => TitleProperty,
118
- "rich_text" => RichTextProperty,
119
- "unique_id" => UniqueIdProperty,
120
- "url" => UrlProperty,
102
+ button: ButtonProperty,
103
+ checkbox: CheckboxProperty,
104
+ created_time: CreatedTimeProperty,
105
+ date: DateProperty,
106
+ formula: FormulaProperty,
107
+ last_edited_time: LastEditedTimeProperty,
108
+ rollup: RollupProperty,
109
+ email: EmailProperty,
110
+ files: FilesProperty,
111
+ created_by: CreatedByProperty,
112
+ last_edited_by: LastEditedByProperty,
113
+ multi_select: MultiSelectProperty,
114
+ relation: RelationProperty,
115
+ number: NumberProperty,
116
+ people: PeopleProperty,
117
+ phone_number: PhoneNumberProperty,
118
+ select: SelectProperty,
119
+ status: StatusProperty,
120
+ title: TitleProperty,
121
+ rich_text: RichTextProperty,
122
+ unique_id: UniqueIdProperty,
123
+ url: UrlProperty,
124
+ verification: VerificationProperty,
121
125
  }[type]
122
126
  raise StandardError, "Irregular property type: #{type}" unless klass
123
127
 
124
- answer = klass.new name, property_id: input_json["id"], json: input_json[type], base_type: base_type,
125
- property_cache: property_cache
126
- answer = answer.retrieve_page_property if answer.is_a?(RelationProperty) && input_json["has_more"] == true
128
+ answer = klass.new name_sym, property_id: input_json[:id], json: input_json[type], base_type: base_type,
129
+ property_cache: property_cache
130
+ answer = answer.retrieve_page_property if answer.is_a?(RelationProperty) && input_json[:has_more] == true
127
131
  answer
128
132
  end
129
133
  end
@@ -137,7 +141,7 @@ module NotionRubyMapping
137
141
 
138
142
  # @return [TrueClass, FalseClass] true if database property
139
143
  def database?
140
- @base_type == :database
144
+ @base_type.to_sym == :database
141
145
  end
142
146
 
143
147
  # @return [TrueClass, FalseClass] true if it has Property contents
@@ -145,18 +149,18 @@ module NotionRubyMapping
145
149
  !instance_of? Property
146
150
  end
147
151
 
148
- # @param [String] key query parameter
152
+ # @param [Symbol] key query parameter
149
153
  # @param [Object] value query value
150
154
  # @return [NotionRubyMapping::Query] generated Query object
151
155
  def make_filter_query(key, value, condition: nil, another_type: nil)
152
156
  if condition
153
- Query.new filter: {"property" => @name, type => {condition => {another_type => {key => value}}}}
157
+ Query.new filter: {property: @name, type => {condition => {another_type => {key => value}}}}
154
158
  elsif another_type
155
- Query.new filter: {"property" => @name, type => {another_type => {key => value}}}
156
- elsif @name == "__timestamp__"
157
- Query.new filter: {"timestamp" => type, type => {key => value}}
159
+ Query.new filter: {property: @name, type => {another_type => {key => value}}}
160
+ elsif @name == :__timestamp__
161
+ Query.new filter: {timestamp: type.to_s, type => {key => value}}
158
162
  else
159
- Query.new filter: {"property" => @name, type => {key => value}}
163
+ Query.new filter: {property: @name, type => {key => value}}
160
164
  end
161
165
  end
162
166
 
@@ -197,7 +201,7 @@ module NotionRubyMapping
197
201
  if @remove
198
202
  {@name => nil}
199
203
  elsif @new_name
200
- {@name => {"name" => @new_name}}
204
+ {@name => {name: @new_name}}
201
205
  else
202
206
  {}
203
207
  end
@@ -207,7 +211,7 @@ module NotionRubyMapping
207
211
 
208
212
  # @param [Symbol, nil] method
209
213
  def assert_page_property(method)
210
- raise StandardError, "#{method} can execute only Page property." unless @base_type == :page
214
+ raise StandardError, "#{method} can execute only Page property." if database?
211
215
  end
212
216
 
213
217
  # @return [NotionRubyMapping::Property, Array<UserObject>, nil]
@@ -242,7 +246,7 @@ module NotionRubyMapping
242
246
  # @return [NotionRubyMapping::Query] generated Query object
243
247
  # @see https://www.notion.so/hkob/CheckboxProperty-ac1edbdb8e264af5ad1432b522b429fd#5f07c4ebc4744986bfc99a43827349fc
244
248
  def filter_equals(value, condition: nil, another_type: nil)
245
- make_filter_query "equals", value, condition: condition, another_type: another_type
249
+ make_filter_query :equals, value, condition: condition, another_type: another_type
246
250
  end
247
251
 
248
252
  # @param [String, Number] value Query value
@@ -251,7 +255,7 @@ module NotionRubyMapping
251
255
  # @return [NotionRubyMapping::Query] generated Query object
252
256
  # @see https://www.notion.so/hkob/CheckboxProperty-ac1edbdb8e264af5ad1432b522b429fd#a44a1875c3ef49f2b4f817291953a1d4
253
257
  def filter_does_not_equal(value, condition: nil, another_type: nil)
254
- make_filter_query "does_not_equal", value, condition: condition, another_type: another_type
258
+ make_filter_query :does_not_equal, value, condition: condition, another_type: another_type
255
259
  end
256
260
  end
257
261
 
@@ -265,7 +269,7 @@ module NotionRubyMapping
265
269
  # @return [NotionRubyMapping::Query] generated Query object
266
270
  # @see https://www.notion.so/hkob/CreatedByProperty-945fa6be1c014da2b7e55a2b76e37b57#271a2ebaa1ec48acae732ca98920feab
267
271
  def filter_contains(value, condition: nil, another_type: nil)
268
- make_filter_query "contains", value, condition: condition, another_type: another_type
272
+ make_filter_query :contains, value, condition: condition, another_type: another_type
269
273
  end
270
274
 
271
275
  # @param [String] value Query value
@@ -274,7 +278,7 @@ module NotionRubyMapping
274
278
  # @return [NotionRubyMapping::Query] generated Query object
275
279
  # @see https://www.notion.so/hkob/CreatedByProperty-945fa6be1c014da2b7e55a2b76e37b57#b0328e3b146f48a4ad4c9c2ee5363486
276
280
  def filter_does_not_contain(value, condition: nil, another_type: nil)
277
- make_filter_query "does_not_contain", value, condition: condition, another_type: another_type
281
+ make_filter_query :does_not_contain, value, condition: condition, another_type: another_type
278
282
  end
279
283
  end
280
284
 
@@ -288,7 +292,7 @@ module NotionRubyMapping
288
292
  # @return [NotionRubyMapping::Query] generated Query object
289
293
  # @see https://www.notion.so/hkob/EmailProperty-39aeb5df56ea4cc1b9380574e4fdeec0#d3e098b2f38c4c8c9d3e815516cfd953
290
294
  def filter_starts_with(value, condition: nil, another_type: nil)
291
- make_filter_query "starts_with", value, condition: condition, another_type: another_type
295
+ make_filter_query :starts_with, value, condition: condition, another_type: another_type
292
296
  end
293
297
 
294
298
  # @param [String] value Query value
@@ -296,7 +300,7 @@ module NotionRubyMapping
296
300
  # @param [String] rollup_type Rollup type
297
301
  # @return [NotionRubyMapping::Query] generated Query object
298
302
  def filter_ends_with(value, condition: nil, another_type: nil)
299
- make_filter_query "ends_with", value, condition: condition, another_type: another_type
303
+ make_filter_query :ends_with, value, condition: condition, another_type: another_type
300
304
  end
301
305
  end
302
306
 
@@ -309,7 +313,7 @@ module NotionRubyMapping
309
313
  # @return [NotionRubyMapping::Query] generated Query object
310
314
  # @see https://www.notion.so/hkob/CreatedByProperty-945fa6be1c014da2b7e55a2b76e37b57#38749dfae0854c68b4c55095d3efbff1
311
315
  def filter_is_empty(condition: nil, another_type: nil)
312
- make_filter_query "is_empty", true, condition: condition, another_type: another_type
316
+ make_filter_query :is_empty, true, condition: condition, another_type: another_type
313
317
  end
314
318
 
315
319
  # @param [String] rollup Rollup name
@@ -317,7 +321,7 @@ module NotionRubyMapping
317
321
  # @return [NotionRubyMapping::Query] generated Query object
318
322
  # @see https://www.notion.so/hkob/CreatedByProperty-945fa6be1c014da2b7e55a2b76e37b57#515659ea52b54fb48c81b813f3b705f6
319
323
  def filter_is_not_empty(condition: nil, another_type: nil)
320
- make_filter_query "is_not_empty", true, condition: condition, another_type: another_type
324
+ make_filter_query :is_not_empty, true, condition: condition, another_type: another_type
321
325
  end
322
326
  end
323
327
 
@@ -330,7 +334,7 @@ module NotionRubyMapping
330
334
  # @param [String] rollup_type Rollup type
331
335
  # @return [NotionRubyMapping::Query] generated Query object
332
336
  def filter_greater_than(value, condition: nil, another_type: nil)
333
- make_filter_query "greater_than", value, condition: condition, another_type: another_type
337
+ make_filter_query :greater_than, value, condition: condition, another_type: another_type
334
338
  end
335
339
 
336
340
  # @param [Number] value Query value
@@ -338,7 +342,7 @@ module NotionRubyMapping
338
342
  # @param [String] rollup_type Rollup type
339
343
  # @return [NotionRubyMapping::Query] generated Query object
340
344
  def filter_less_than(value, condition: nil, another_type: nil)
341
- make_filter_query "less_than", value, condition: condition, another_type: another_type
345
+ make_filter_query :less_than, value, condition: condition, another_type: another_type
342
346
  end
343
347
 
344
348
  # @param [Number] value Query value
@@ -346,7 +350,7 @@ module NotionRubyMapping
346
350
  # @param [String] rollup_type Rollup type
347
351
  # @return [NotionRubyMapping::Query] generated Query object
348
352
  def filter_greater_than_or_equal_to(value, condition: nil, another_type: nil)
349
- make_filter_query "greater_than_or_equal_to", value, condition: condition, another_type: another_type
353
+ make_filter_query :greater_than_or_equal_to, value, condition: condition, another_type: another_type
350
354
  end
351
355
 
352
356
  # @param [Number] value Query value
@@ -354,7 +358,7 @@ module NotionRubyMapping
354
358
  # @param [String] rollup_type Rollup type
355
359
  # @return [NotionRubyMapping::Query] generated Query object
356
360
  def filter_less_than_or_equal_to(value, condition: nil, another_type: nil)
357
- make_filter_query "less_than_or_equal_to", value, condition: condition, another_type: another_type
361
+ make_filter_query :less_than_or_equal_to, value, condition: condition, another_type: another_type
358
362
  end
359
363
  end
360
364
  end
@@ -3,7 +3,7 @@
3
3
  module NotionRubyMapping
4
4
  # MultiSelect property
5
5
  class RelationProperty < MultiProperty
6
- TYPE = "relation"
6
+ TYPE = :relation
7
7
 
8
8
  ### Public announced methods
9
9
 
@@ -23,7 +23,7 @@ module NotionRubyMapping
23
23
  assert_page_property __method__
24
24
  @will_update = true
25
25
  @json << if page_id_or_json.is_a? String
26
- {"id" => page_id_or_json}
26
+ {id: page_id_or_json}
27
27
  else
28
28
  page_id_or_json
29
29
  end
@@ -38,7 +38,7 @@ module NotionRubyMapping
38
38
  page_ids_or_jsons = [page_ids_or_jsons] unless page_ids_or_jsons.is_a? Array
39
39
 
40
40
  @json = page_ids_or_jsons.map do |page_id_or_json|
41
- page_id_or_json.is_a?(String) ? {"id" => page_id_or_json} : page_id_or_json
41
+ page_id_or_json.is_a?(String) ? {id: page_id_or_json} : page_id_or_json
42
42
  end
43
43
  end
44
44
 
@@ -48,19 +48,20 @@ module NotionRubyMapping
48
48
  # @see https://www.notion.so/hkob/RelationProperty-f608ab41a1f0476b98456620346fba03#eb40f1a2ad5c4e368d343870a7e529f9
49
49
  def relation_database_id
50
50
  assert_database_property __method__
51
- @json["database_id"]
51
+ @json[:database_id]
52
52
  end
53
53
 
54
54
  # @param [String] database_id
55
55
  # @param [String] synced_property_name
56
56
  # @see https://www.notion.so/hkob/RelationProperty-f608ab41a1f0476b98456620346fba03#7f5029fb7f6e4c009f22888b233e6f64
57
- def replace_relation_database(database_id: nil, type: "dual_property")
57
+ def replace_relation_database(database_id: nil, type: :dual_property)
58
58
  assert_database_property __method__
59
+ type_sym = type.to_sym
59
60
  @will_update = true
60
- @json["database_id"] = database_id if database_id
61
- @json["type"] = type
62
- @json[type] = {}
63
- @json.delete type == "dual_property" ? "single_property" : "dual_property"
61
+ @json[:database_id] = database_id if database_id
62
+ @json[:type] = type_sym.to_s
63
+ @json[type_sym] = {}
64
+ @json.delete type_sym == :dual_property ? :single_property : :dual_property
64
65
  @json
65
66
  end
66
67
 
@@ -68,7 +69,7 @@ module NotionRubyMapping
68
69
 
69
70
  ## Common methods
70
71
 
71
- # @param [String] name
72
+ # @param [String, Symbol] name
72
73
  # @param [Hash, Array] json
73
74
  # @param [String, Array] relation
74
75
  def initialize(name, will_update: false, json: nil, relation: nil, base_type: :page, property_id: nil,
@@ -78,7 +79,7 @@ module NotionRubyMapping
78
79
  @json = if database?
79
80
  json || {}
80
81
  elsif relation
81
- Array(relation).map { |r| {"id" => r} }
82
+ Array(relation).map { |r| {id: r} }
82
83
  else
83
84
  json || []
84
85
  end
@@ -93,20 +94,20 @@ module NotionRubyMapping
93
94
  return ans if ans != {} || !@will_update
94
95
 
95
96
  ans[@name] ||= {}
96
- ans[@name]["relation"] = @json
97
+ ans[@name][:relation] = @json
97
98
  ans
98
99
  end
99
100
 
100
101
  def database_id
101
- @json["database_id"]
102
+ @json[:database_id]
102
103
  end
103
104
 
104
105
  def synced_property_id
105
- @json["type"] == "dual_property" ? @json["dual_property"]["synced_property_id"] : nil
106
+ @json[:type] == "dual_property" ? @json[:dual_property][:synced_property_id] : nil
106
107
  end
107
108
 
108
109
  def synced_property_name
109
- @json["type"] == "dual_property" ? @json["dual_property"]["synced_property_name"] : nil
110
+ @json[:type] == "dual_property" ? @json[:dual_property][:synced_property_name] : nil
110
111
  end
111
112
 
112
113
  # @return [Hash] created json
@@ -114,8 +115,8 @@ module NotionRubyMapping
114
115
  assert_page_property __method__
115
116
  {
116
117
  @name => {
117
- "type" => "relation",
118
- "relation" => @json,
118
+ type: "relation",
119
+ relation: @json,
119
120
  },
120
121
  }
121
122
  end
@@ -3,7 +3,7 @@
3
3
  module NotionRubyMapping
4
4
  # RichTextProperty
5
5
  class RichTextProperty < TextProperty
6
- TYPE = "rich_text"
6
+ TYPE = :rich_text
7
7
 
8
8
  ### Not public announced methods
9
9
 
@@ -13,9 +13,9 @@ module NotionRubyMapping
13
13
  def update_from_json(json)
14
14
  @will_update = false
15
15
  if database?
16
- @json = json["rich_text"] || {}
16
+ @json = json[:rich_text] || {}
17
17
  else
18
- @text_objects = RichTextArray.new "rich_text", json: json["rich_text"]
18
+ @text_objects = RichTextArray.new :rich_text, json: json[:rich_text]
19
19
  end
20
20
  end
21
21
 
@@ -27,8 +27,8 @@ module NotionRubyMapping
27
27
  text_json = @text_objects.map(&:property_values_json)
28
28
  {
29
29
  @name => {
30
- "type" => "rich_text",
31
- "rich_text" => text_json.empty? ? (@json || []) : text_json,
30
+ type: "rich_text",
31
+ rich_text: text_json.empty? ? (@json || []) : text_json,
32
32
  },
33
33
  }
34
34
  end
@@ -6,7 +6,7 @@ module NotionRubyMapping
6
6
  include ContainsDoesNotContain
7
7
  include StartsWithEndsWith
8
8
  include GreaterThanLessThan
9
- TYPE = "rollup"
9
+ TYPE = :rollup
10
10
 
11
11
  ### Public announced methods
12
12
 
@@ -24,7 +24,7 @@ module NotionRubyMapping
24
24
  # @see https://www.notion.so/hkob/RollupProperty-eb10fbac3a93436289e74e5c651e9134#94021d4e6c0b44519443c1e1cc6b3aba
25
25
  def function
26
26
  assert_database_property __method__
27
- @json["function"]
27
+ @json[:function]
28
28
  end
29
29
 
30
30
  # @param [String] func
@@ -32,14 +32,14 @@ module NotionRubyMapping
32
32
  def function=(func)
33
33
  assert_database_property __method__
34
34
  @will_update = true
35
- @json["function"] = func
35
+ @json[:function] = func
36
36
  end
37
37
 
38
38
  # @return [String] new or settled relation_property_name
39
39
  # @see https://www.notion.so/hkob/RollupProperty-eb10fbac3a93436289e74e5c651e9134#684fc4739c4f4d6a9b93687f72cd8dad
40
40
  def relation_property_name
41
41
  assert_database_property __method__
42
- @json["relation_property_name"]
42
+ @json[:relation_property_name]
43
43
  end
44
44
 
45
45
  # @param [String] rpn
@@ -47,14 +47,14 @@ module NotionRubyMapping
47
47
  def relation_property_name=(rpn)
48
48
  assert_database_property __method__
49
49
  @will_update = true
50
- @json["relation_property_name"] = rpn
50
+ @json[:relation_property_name] = rpn
51
51
  end
52
52
 
53
53
  # @return [String] new or settled rollup_property_name
54
54
  # @see https://www.notion.so/hkob/RollupProperty-eb10fbac3a93436289e74e5c651e9134#8ce9ee31a2e2473ab7ba21781e4b440d
55
55
  def rollup_property_name
56
56
  assert_database_property __method__
57
- @json["rollup_property_name"]
57
+ @json[:rollup_property_name]
58
58
  end
59
59
 
60
60
  # @param [String] rpn
@@ -62,14 +62,14 @@ module NotionRubyMapping
62
62
  def rollup_property_name=(rpn)
63
63
  assert_database_property __method__
64
64
  @will_update = true
65
- @json["rollup_property_name"] = rpn
65
+ @json[:rollup_property_name] = rpn
66
66
  end
67
67
 
68
68
  ### Not public announced methods
69
69
 
70
70
  ## Common methods
71
71
 
72
- # @param [String] name
72
+ # @param [String, Symbol] name
73
73
  # @param [Hash] json
74
74
  def initialize(name, will_update: false, json: nil, base_type: :page, property_id: nil,
75
75
  property_cache: nil, query: nil)
@@ -87,10 +87,10 @@ module NotionRubyMapping
87
87
  return ans if ans != {} || !@will_update
88
88
 
89
89
  ans[@name] ||= {}
90
- ans[@name]["rollup"] ||= {}
91
- ans[@name]["rollup"]["function"] = function
92
- ans[@name]["rollup"]["relation_property_name"] = relation_property_name
93
- ans[@name]["rollup"]["rollup_property_name"] = rollup_property_name
90
+ ans[@name][:rollup] ||= {}
91
+ ans[@name][:rollup][:function] = function
92
+ ans[@name][:rollup][:relation_property_name] = relation_property_name
93
+ ans[@name][:rollup][:rollup_property_name] = rollup_property_name
94
94
  ans
95
95
  end
96
96
 
@@ -108,9 +108,9 @@ module NotionRubyMapping
108
108
  # @return [Hash]
109
109
  def property_schema_json_sub
110
110
  {
111
- "function" => function,
112
- "relation_property_name" => relation_property_name,
113
- "rollup_property_name" => rollup_property_name,
111
+ function: function,
112
+ relation_property_name: relation_property_name,
113
+ rollup_property_name: rollup_property_name,
114
114
  }
115
115
  end
116
116
  end
@@ -5,7 +5,7 @@ module NotionRubyMapping
5
5
  class SelectProperty < Property
6
6
  include EqualsDoesNotEqual
7
7
  include IsEmptyIsNotEmpty
8
- TYPE = "select"
8
+ TYPE = :select
9
9
 
10
10
  ### Public announced methods
11
11
 
@@ -23,7 +23,7 @@ module NotionRubyMapping
23
23
  # @see https://www.notion.so/hkob/SelectProperty-6d6a0defa70d4b26af0fdbdcfbf99f28#27a05e52715a4acd9156b5f146653e51
24
24
  def select_name
25
25
  assert_page_property __method__
26
- @json["name"]
26
+ @json[:name]
27
27
  end
28
28
 
29
29
  ## Database property only methods
@@ -33,28 +33,28 @@ module NotionRubyMapping
33
33
  # @return [Array] added array
34
34
  # @see https://www.notion.so/hkob/SelectProperty-6d6a0defa70d4b26af0fdbdcfbf99f28#3e1c7dbda7fb455f94ee93d9653b7880
35
35
  def add_select_option(name:, color:)
36
- edit_select_options << {"name" => name, "color" => color}
36
+ edit_select_options << {name: name, color: color}
37
37
  end
38
38
 
39
39
  # @return [Array] copyed multi select options
40
40
  def edit_select_options
41
41
  assert_database_property __method__
42
42
  @will_update = true
43
- @json["options"] ||= []
43
+ @json[:options] ||= []
44
44
  end
45
45
 
46
46
  # @return [Array]
47
47
  # @see https://www.notion.so/hkob/SelectProperty-6d6a0defa70d4b26af0fdbdcfbf99f28#790a297f2c1b4ba5a4d86074d4c70a89
48
48
  def select_options
49
49
  assert_database_property __method__
50
- @json["options"] || []
50
+ @json[:options] || []
51
51
  end
52
52
 
53
53
  # @return [String]
54
54
  # @see https://www.notion.so/hkob/SelectProperty-6d6a0defa70d4b26af0fdbdcfbf99f28#72da1632793c4a5296f3bc89de2df413
55
55
  def select_names
56
56
  assert_database_property __method__
57
- @json["options"].map { |s| s["name"] }
57
+ @json[:options].map { |s| s[:name] }
58
58
  end
59
59
 
60
60
  ## Page property only methods
@@ -64,14 +64,14 @@ module NotionRubyMapping
64
64
  def select=(select)
65
65
  assert_page_property __method__
66
66
  @will_update = true
67
- @json = {"name" => select}
67
+ @json = {name: select}
68
68
  end
69
69
 
70
70
  ### Not public announced methods
71
71
 
72
72
  ## Common methods
73
73
 
74
- # @param [String] name Property name
74
+ # @param [String, Symbol] name Property name
75
75
  # @param [Hash] json
76
76
  # @param [String] select String value (optional)
77
77
  def initialize(name, will_update: false, base_type: :page, json: nil, select: nil, property_id: nil,
@@ -79,9 +79,9 @@ module NotionRubyMapping
79
79
  super name, will_update: will_update, base_type: base_type, property_id: property_id,
80
80
  property_cache: property_cache
81
81
  @json = if database?
82
- json || {"options" => []}
82
+ json || {options: []}
83
83
  else
84
- json || {"name" => select}
84
+ json || {name: select}
85
85
  end
86
86
  end
87
87
 
@@ -94,8 +94,8 @@ module NotionRubyMapping
94
94
  return ans if ans != {} || !@will_update
95
95
 
96
96
  ans[@name] ||= {}
97
- ans[@name]["select"] ||= {}
98
- ans[@name]["select"]["options"] = @json["options"]
97
+ ans[@name][:select] ||= {}
98
+ ans[@name][:select][:options] = @json[:options]
99
99
  ans
100
100
  end
101
101
 
@@ -104,7 +104,7 @@ module NotionRubyMapping
104
104
  # @return [Hash]
105
105
  def property_values_json
106
106
  assert_page_property __method__
107
- {@name => {"type" => "select", "select" => @json}}
107
+ {@name => {type: "select", select: @json}}
108
108
  end
109
109
 
110
110
  protected
@@ -113,7 +113,7 @@ module NotionRubyMapping
113
113
 
114
114
  # @return [Hash]
115
115
  def property_schema_json_sub
116
- {"options" => edit_select_options}
116
+ {options: edit_select_options}
117
117
  end
118
118
  end
119
119
  end