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.
- checksums.yaml +4 -4
- data/README.md +416 -135
- data/env.yml.sample +1 -0
- data/examples/change_title.md +26 -0
- data/examples/renumbering_pages.md +20 -0
- data/examples/set_icon_to_all_icon_unsettled_pages.md +30 -0
- data/lib/notion_ruby_mapping/base.rb +124 -71
- data/lib/notion_ruby_mapping/checkbox_property.rb +27 -12
- data/lib/notion_ruby_mapping/created_by_property.rb +22 -10
- data/lib/notion_ruby_mapping/created_time_property.rb +16 -14
- data/lib/notion_ruby_mapping/database.rb +74 -10
- data/lib/notion_ruby_mapping/date_property.rb +67 -42
- data/lib/notion_ruby_mapping/email_property.rb +26 -16
- data/lib/notion_ruby_mapping/files_property.rb +40 -24
- data/lib/notion_ruby_mapping/formula_property.rb +51 -10
- data/lib/notion_ruby_mapping/last_edited_by_property.rb +22 -9
- data/lib/notion_ruby_mapping/last_edited_time_property.rb +16 -14
- data/lib/notion_ruby_mapping/list.rb +3 -0
- data/lib/notion_ruby_mapping/multi_select_property.rb +83 -21
- data/lib/notion_ruby_mapping/notion_cache.rb +17 -13
- data/lib/notion_ruby_mapping/number_property.rb +71 -10
- data/lib/notion_ruby_mapping/page.rb +32 -10
- data/lib/notion_ruby_mapping/payload.rb +21 -3
- data/lib/notion_ruby_mapping/people_property.rb +47 -19
- data/lib/notion_ruby_mapping/phone_number_property.rb +26 -15
- data/lib/notion_ruby_mapping/property.rb +140 -49
- data/lib/notion_ruby_mapping/property_cache.rb +31 -3
- data/lib/notion_ruby_mapping/query.rb +10 -0
- data/lib/notion_ruby_mapping/relation_property.rb +74 -21
- data/lib/notion_ruby_mapping/rich_text_array.rb +81 -0
- data/lib/notion_ruby_mapping/rich_text_object.rb +1 -0
- data/lib/notion_ruby_mapping/rich_text_property.rb +12 -1
- data/lib/notion_ruby_mapping/rollup_property.rb +82 -10
- data/lib/notion_ruby_mapping/select_property.rb +88 -13
- data/lib/notion_ruby_mapping/text_object.rb +0 -2
- data/lib/notion_ruby_mapping/text_property.rb +19 -45
- data/lib/notion_ruby_mapping/title_property.rb +12 -1
- data/lib/notion_ruby_mapping/url_property.rb +26 -15
- data/lib/notion_ruby_mapping/user_object.rb +4 -4
- data/lib/notion_ruby_mapping/version.rb +1 -1
- data/lib/notion_ruby_mapping.rb +2 -1
- metadata +6 -2
data/env.yml.sample
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
# Change title
|
2
|
+
|
3
|
+
The following code update the page title.
|
4
|
+
|
5
|
+
#### Pattern 1 (replace existing text partially)
|
6
|
+
|
7
|
+
```Ruby
|
8
|
+
page = Page.find page_id # API access
|
9
|
+
print page.title # -> ABC\nDEF
|
10
|
+
tp = page.properties["Title"]
|
11
|
+
tp[1].text = "GHI"
|
12
|
+
page.save # API access
|
13
|
+
print page.title # -> ABC\nGHI
|
14
|
+
```
|
15
|
+
|
16
|
+
#### Pattern 2 (replace all text)
|
17
|
+
|
18
|
+
```Ruby
|
19
|
+
page = Page.new id: page_id, assign: [TitleProperty, "Title"]
|
20
|
+
tp = page.properties["Title"]
|
21
|
+
tp << TextObject.new("JKL")
|
22
|
+
page.save # API access
|
23
|
+
print page.title # -> JKL
|
24
|
+
```
|
25
|
+
---
|
26
|
+
[Return to README.md](../README.md#2-example-code)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# Renumbering pages
|
2
|
+
|
3
|
+
The following code sets serial numbers to the pages whose title is not empty in ascending order of titles.
|
4
|
+
|
5
|
+
```Ruby
|
6
|
+
db = Database.new id: database_id, assign: [RichTextProperty, "TextTitle"]
|
7
|
+
tp = db.properties["TextTitle"]
|
8
|
+
query = tp.filter_is_not_empty.ascending(tp)
|
9
|
+
db.query_database(tp.filter_is_not_empty.ascending(tp)).each.with_index(1) do |page, index|
|
10
|
+
page.properties["NumberTitle"].number = index
|
11
|
+
page.save
|
12
|
+
end
|
13
|
+
```
|
14
|
+
|
15
|
+
| After execution |
|
16
|
+
|-----------------------------------------------|
|
17
|
+
|  |
|
18
|
+
|
19
|
+
---
|
20
|
+
[Return to README.md](../README.md#2-example-code)
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# Set icon to all icon unsettled pages
|
2
|
+
|
3
|
+
The following code sets a "💿" icon on all unset pages in the database.
|
4
|
+
|
5
|
+
```Ruby
|
6
|
+
require "notion_ruby_mapping"
|
7
|
+
|
8
|
+
include NotionRubyMapping
|
9
|
+
|
10
|
+
token = ENV["NOTION_API_TOKEN"]
|
11
|
+
database_id = ENV["DATABASE_ID"]
|
12
|
+
|
13
|
+
NotionCache.instance.create_client token
|
14
|
+
|
15
|
+
db = Database.new id: database_id
|
16
|
+
db.query_database.each do |page|
|
17
|
+
unless page.icon
|
18
|
+
page.set_icon(emoji: "💿")
|
19
|
+
page.save
|
20
|
+
p page.id
|
21
|
+
end
|
22
|
+
end
|
23
|
+
```
|
24
|
+
|
25
|
+
|Before execution|After execution|
|
26
|
+
|---|---|
|
27
|
+
|||
|
28
|
+
|
29
|
+
---
|
30
|
+
[Return to README.md](../README.md#2-example-code)
|
@@ -3,6 +3,8 @@
|
|
3
3
|
module NotionRubyMapping
|
4
4
|
# Notion Base object (Parent of Page / Database / List)
|
5
5
|
class Base
|
6
|
+
#### Public announced methods
|
7
|
+
|
6
8
|
# @param [Hash, nil] json
|
7
9
|
# @param [String, nil] id
|
8
10
|
# @param [Array<Property, Class, String>] assign
|
@@ -15,31 +17,53 @@ module NotionRubyMapping
|
|
15
17
|
|
16
18
|
@payload = Payload.new(parent && {"parent" => parent})
|
17
19
|
@property_cache = nil
|
20
|
+
@created_time = nil
|
21
|
+
@last_edited_time = nil
|
18
22
|
assign.each_slice(2) { |(klass, key)| assign_property(klass, key) }
|
19
23
|
end
|
20
24
|
attr_reader :json, :id
|
21
25
|
|
22
|
-
# @param [
|
23
|
-
# @return [NotionRubyMapping::
|
24
|
-
def
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
Block.new json: json
|
26
|
+
# @param [String] key
|
27
|
+
# @return [NotionRubyMapping::PropertyCache, Hash] obtained Page value or PropertyCache
|
28
|
+
def [](key)
|
29
|
+
unless @json
|
30
|
+
raise StandardError, "Unknown id" if @id.nil?
|
31
|
+
|
32
|
+
reload
|
33
|
+
end
|
34
|
+
case key
|
35
|
+
when "properties"
|
36
|
+
properties
|
34
37
|
else
|
35
|
-
|
38
|
+
@json[key]
|
36
39
|
end
|
37
40
|
end
|
38
41
|
|
42
|
+
# @return [NotionRubyMapping::CreatedTimeProperty]
|
43
|
+
def created_time
|
44
|
+
@created_time ||= CreatedTimeProperty.new("title")
|
45
|
+
end
|
46
|
+
|
47
|
+
# @return [TrueClass, FalseClass] true if Database object
|
48
|
+
def database?
|
49
|
+
is_a? Database
|
50
|
+
end
|
51
|
+
|
52
|
+
# @return [Hash, nil] obtained Hash
|
53
|
+
def icon
|
54
|
+
self["icon"]
|
55
|
+
end
|
56
|
+
|
57
|
+
# @return [Boolean] true if new record
|
39
58
|
def new_record?
|
40
59
|
@new_record
|
41
60
|
end
|
42
61
|
|
62
|
+
# @return [TrueClass, FalseClass] true if Page object
|
63
|
+
def page?
|
64
|
+
is_a? Page
|
65
|
+
end
|
66
|
+
|
43
67
|
# @return [NotionRubyMapping::PropertyCache] get or created PropertyCache object
|
44
68
|
def properties
|
45
69
|
unless @property_cache
|
@@ -48,30 +72,68 @@ module NotionRubyMapping
|
|
48
72
|
|
49
73
|
reload
|
50
74
|
end
|
51
|
-
@property_cache = PropertyCache.new json_properties
|
75
|
+
@property_cache = PropertyCache.new json_properties, base_type: database? ? :database : :page
|
52
76
|
end
|
53
77
|
@property_cache
|
54
78
|
end
|
55
79
|
|
80
|
+
# @return [NotionRubyMapping::Base, String]
|
81
|
+
def save(dry_run: false)
|
82
|
+
if dry_run
|
83
|
+
@new_record ? create(dry_run: true) : update(dry_run: true)
|
84
|
+
else
|
85
|
+
@new_record ? create : update
|
86
|
+
@property_cache.clear_will_update
|
87
|
+
@payload.clear
|
88
|
+
self
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
# @param [String] emoji
|
93
|
+
# @param [String] url
|
94
|
+
# @return [NotionRubyMapping::Base]
|
95
|
+
def set_icon(emoji: nil, url: nil)
|
96
|
+
@payload.set_icon(emoji: emoji, url: url) if page? || database?
|
97
|
+
self
|
98
|
+
end
|
99
|
+
|
56
100
|
# @return [String] title
|
57
101
|
def title
|
58
102
|
properties.select { |p| p.is_a? TitleProperty }.map(&:full_text).join ""
|
59
103
|
end
|
60
104
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
105
|
+
### Not public announced methods
|
106
|
+
|
107
|
+
# @param [Hash, Notion::Messages] json
|
108
|
+
# @return [NotionRubyMapping::Base]
|
109
|
+
def self.create_from_json(json)
|
110
|
+
case json["object"]
|
111
|
+
when "page"
|
112
|
+
Page.new json: json
|
113
|
+
when "database"
|
114
|
+
Database.new json: json
|
115
|
+
when "list"
|
116
|
+
List.new json: json
|
117
|
+
when "block"
|
118
|
+
Block.new json: json
|
119
|
+
else
|
120
|
+
raise StandardError, json.inspect
|
121
|
+
end
|
70
122
|
end
|
71
123
|
|
72
|
-
# @
|
73
|
-
|
74
|
-
|
124
|
+
# @param [NotionRubyMapping::Property] klass
|
125
|
+
# @param [String] title
|
126
|
+
# @return [NotionRubyMapping::Property] generated property
|
127
|
+
def assign_property(klass, title)
|
128
|
+
@property_cache ||= PropertyCache.new({}, base_type: database? ? :database : :page)
|
129
|
+
|
130
|
+
property = if database?
|
131
|
+
klass.new(title, will_update: new_record?, base_type: :database)
|
132
|
+
else
|
133
|
+
klass.new(title, will_update: true, base_type: :page)
|
134
|
+
end
|
135
|
+
@property_cache.add_property property
|
136
|
+
property
|
75
137
|
end
|
76
138
|
|
77
139
|
# @return [NotionRubyMapping::List]
|
@@ -79,74 +141,65 @@ module NotionRubyMapping
|
|
79
141
|
@children ||= @nc.block_children(id)
|
80
142
|
end
|
81
143
|
|
82
|
-
# @
|
83
|
-
|
84
|
-
|
85
|
-
|
144
|
+
# @return [Hash] created json for update page
|
145
|
+
def property_values_json
|
146
|
+
@payload.property_values_json @property_cache
|
147
|
+
end
|
86
148
|
|
87
|
-
|
88
|
-
|
89
|
-
|
149
|
+
# @return [NotionRubyMapping::Base] reloaded self
|
150
|
+
def reload
|
151
|
+
update_json reload_json
|
90
152
|
self
|
91
153
|
end
|
92
154
|
|
155
|
+
# @return [NotionRubyMapping::Base]
|
93
156
|
def restore_from_json
|
94
|
-
@payload.clear
|
95
157
|
return if (ps = @json["properties"]).nil?
|
96
158
|
|
97
159
|
properties.json = json_properties
|
98
|
-
return unless is_a?
|
160
|
+
return unless is_a?(Page) || is_a?(Database)
|
99
161
|
|
100
162
|
ps.each do |key, json|
|
101
163
|
properties[key].update_from_json json
|
102
164
|
end
|
165
|
+
self
|
103
166
|
end
|
104
167
|
|
105
|
-
# @param [
|
106
|
-
# @param [String] url
|
168
|
+
# @param [Hash] json
|
107
169
|
# @return [NotionRubyMapping::Base]
|
108
|
-
def
|
109
|
-
|
110
|
-
|
111
|
-
|
170
|
+
def update_json(json)
|
171
|
+
raise StandardError, json.inspect unless json["object"] != "error" && @json.nil? || @json["type"] == json["type"]
|
172
|
+
|
173
|
+
@json = json
|
174
|
+
@id = @nc.hex_id(@json["id"])
|
175
|
+
restore_from_json
|
112
176
|
self
|
113
177
|
end
|
114
178
|
|
115
|
-
#
|
116
|
-
# @return [
|
117
|
-
def
|
118
|
-
|
119
|
-
raise StandardError, "Unknown id" if @id.nil?
|
120
|
-
|
121
|
-
reload
|
122
|
-
end
|
123
|
-
case key
|
124
|
-
when "properties"
|
125
|
-
properties
|
126
|
-
else
|
127
|
-
@json[key]
|
128
|
-
end
|
179
|
+
# protected
|
180
|
+
# @return [Hash] json properties
|
181
|
+
def json_properties
|
182
|
+
@json && @json["properties"]
|
129
183
|
end
|
130
184
|
|
131
|
-
# @
|
132
|
-
|
133
|
-
|
185
|
+
# @param [Object] method
|
186
|
+
# @param [Object] path
|
187
|
+
# @param [nil] json
|
188
|
+
def self.dry_run_script(method, path, json = nil)
|
189
|
+
shell = [
|
190
|
+
"#!/bin/sh\ncurl #{method == :get ? "" : "-X #{method.to_s.upcase}"} 'https://api.notion.com/#{path}'",
|
191
|
+
" -H 'Notion-Version: 2022-02-22'",
|
192
|
+
" -H 'Authorization: Bearer '\"$NOTION_API_KEY\"''"
|
193
|
+
]
|
194
|
+
shell << " -H 'Content-Type: application/json'" unless path == :get
|
195
|
+
shell << " --data '#{JSON.generate json}'" if json
|
196
|
+
shell.join("\\ \n")
|
134
197
|
end
|
135
198
|
|
136
|
-
|
137
|
-
# @param [String] title
|
138
|
-
# @return [Property] generated property
|
139
|
-
def assign_property(klass, title)
|
140
|
-
@property_cache ||= PropertyCache.new {}
|
141
|
-
|
142
|
-
property = klass.new(title, will_update: true)
|
143
|
-
@property_cache.add_property property
|
144
|
-
property
|
145
|
-
end
|
199
|
+
protected
|
146
200
|
|
147
|
-
|
148
|
-
|
149
|
-
@payload.property_values_json @property_cache&.property_values_json
|
201
|
+
def dry_run_script(method, path, json_method)
|
202
|
+
self.class.dry_run_script method, path, send(json_method)
|
150
203
|
end
|
151
204
|
end
|
152
205
|
end
|
@@ -6,30 +6,45 @@ module NotionRubyMapping
|
|
6
6
|
include EqualsDoesNotEqual
|
7
7
|
TYPE = "checkbox"
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
### Public announced methods
|
10
|
+
|
11
|
+
## Common methods
|
12
|
+
|
13
|
+
# @return [Boolean, Hash]
|
14
|
+
def checkbox
|
15
|
+
@json
|
14
16
|
end
|
15
|
-
|
17
|
+
|
18
|
+
## Page property only methods
|
16
19
|
|
17
20
|
# @param [Boolean] flag
|
18
21
|
# @return [TrueClass, FalseClass] settled value
|
19
22
|
def checkbox=(flag)
|
20
23
|
@will_update = true
|
21
|
-
@
|
24
|
+
@json = flag
|
22
25
|
end
|
23
26
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
27
|
+
### Not public announced methods
|
28
|
+
|
29
|
+
## Common methods
|
30
|
+
|
31
|
+
# @param [String] name Property name
|
32
|
+
# @param [Boolean, Hash] json
|
33
|
+
def initialize(name, will_update: false, base_type: :page, json: nil)
|
34
|
+
super name, will_update: will_update, base_type: base_type
|
35
|
+
@json = if database?
|
36
|
+
json || {}
|
37
|
+
else
|
38
|
+
json || false
|
39
|
+
end
|
28
40
|
end
|
29
41
|
|
42
|
+
## Page property only methods
|
43
|
+
|
30
44
|
# @return [Hash]
|
31
45
|
def property_values_json
|
32
|
-
|
46
|
+
assert_page_property __method__
|
47
|
+
{@name => {"checkbox" => @json, "type" => "checkbox"}}
|
33
48
|
end
|
34
49
|
end
|
35
50
|
end
|
@@ -5,24 +5,36 @@ module NotionRubyMapping
|
|
5
5
|
class CreatedByProperty < MultiProperty
|
6
6
|
TYPE = "created_by"
|
7
7
|
|
8
|
+
### Public announced methods
|
9
|
+
|
10
|
+
## Common methods
|
11
|
+
|
12
|
+
# @return [NotionRubyMapping::UserObject, Hash]
|
13
|
+
def created_by
|
14
|
+
@json
|
15
|
+
end
|
16
|
+
|
17
|
+
### Not public announced methods
|
18
|
+
|
19
|
+
## Common methods
|
20
|
+
|
8
21
|
# @param [String] name Property name
|
9
22
|
# @param [String] user_id user_id (optional)
|
10
23
|
# @param [Hash] json json (optional)
|
11
|
-
def initialize(name, json: nil, user_id: nil)
|
12
|
-
super name, will_update:
|
13
|
-
@
|
24
|
+
def initialize(name, will_update: false, base_type: :page, json: nil, user_id: nil)
|
25
|
+
super name, will_update: will_update, base_type: base_type
|
26
|
+
@json = if database?
|
27
|
+
json || {}
|
28
|
+
else
|
29
|
+
UserObject.new user_id: user_id, json: json
|
30
|
+
end
|
14
31
|
end
|
15
|
-
attr_reader :user
|
16
32
|
|
17
33
|
# @param [Hash] json
|
18
34
|
def update_from_json(json)
|
19
35
|
@will_update = false
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
# @return [Hash] {} created_time cannot be updated
|
24
|
-
def property_values_json
|
25
|
-
{}
|
36
|
+
cb = json["created_by"]
|
37
|
+
@json = database? ? cb : UserObject.new(json: cb)
|
26
38
|
end
|
27
39
|
end
|
28
40
|
end
|
@@ -5,23 +5,25 @@ module NotionRubyMapping
|
|
5
5
|
class CreatedTimeProperty < DateBaseProperty
|
6
6
|
TYPE = "created_time"
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
super name, will_update: false
|
12
|
-
@created_time = created_time
|
13
|
-
end
|
14
|
-
attr_reader :created_time
|
8
|
+
### Public announced methods
|
9
|
+
|
10
|
+
## Common methods
|
15
11
|
|
16
|
-
# @
|
17
|
-
def
|
18
|
-
@
|
19
|
-
@created_time = json["created_time"]
|
12
|
+
# @return [Date, Hash]
|
13
|
+
def created_time
|
14
|
+
@json
|
20
15
|
end
|
21
16
|
|
22
|
-
|
23
|
-
|
24
|
-
|
17
|
+
### Not public announced methods
|
18
|
+
|
19
|
+
## Common methods
|
20
|
+
|
21
|
+
# @param [String] name Property name
|
22
|
+
# @param [String] json created_time value (optional)
|
23
|
+
def initialize(name, will_update: false, base_type: :page, json: nil)
|
24
|
+
super name, will_update: will_update, base_type: base_type
|
25
|
+
@json = json
|
26
|
+
@json ||= {} if database?
|
25
27
|
end
|
26
28
|
end
|
27
29
|
end
|
@@ -3,19 +3,28 @@
|
|
3
3
|
module NotionRubyMapping
|
4
4
|
# Notion database
|
5
5
|
class Database < Base
|
6
|
-
|
7
|
-
NotionCache.instance.database id
|
8
|
-
end
|
6
|
+
### Public announced methods
|
9
7
|
|
10
|
-
# @param [
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
# @param [String] id
|
9
|
+
# @return [NotionRubyMapping::Database, String]
|
10
|
+
def self.find(id, dry_run: false)
|
11
|
+
nc = NotionCache.instance
|
12
|
+
if dry_run
|
13
|
+
dry_run_script :get, nc.database_path(id)
|
14
|
+
else
|
15
|
+
nc.database id
|
16
|
+
end
|
14
17
|
end
|
15
18
|
|
16
|
-
# @return [NotionRubyMapping::
|
17
|
-
|
18
|
-
|
19
|
+
# @return [NotionRubyMapping::Property]
|
20
|
+
# @param [Class] klass
|
21
|
+
# @param [String] title
|
22
|
+
def add_property(klass, title)
|
23
|
+
prop = assign_property klass, title
|
24
|
+
yield prop if block_given?
|
25
|
+
@payload.merge_property prop.property_schema_json
|
26
|
+
prop.clear_will_update
|
27
|
+
prop
|
19
28
|
end
|
20
29
|
|
21
30
|
# @param [Array<Property, Class, String>] assign
|
@@ -24,11 +33,66 @@ module NotionRubyMapping
|
|
24
33
|
Page.new assign: assign, parent: {"database_id" => @id}
|
25
34
|
end
|
26
35
|
|
36
|
+
# @return [NotionRubyMapping::RichTextArray]
|
37
|
+
def database_title
|
38
|
+
@database_title ||= RichTextArray.new "title", json: (self["title"]), will_update: new_record?
|
39
|
+
end
|
40
|
+
|
41
|
+
def property_schema_json
|
42
|
+
@payload.property_schema_json @property_cache, database_title
|
43
|
+
end
|
44
|
+
|
45
|
+
# @return [Hash] created json for update database
|
46
|
+
def property_values_json
|
47
|
+
@payload.property_values_json @property_cache, database_title
|
48
|
+
end
|
49
|
+
|
50
|
+
# @param [NotionRubyMapping::Query] query object
|
51
|
+
# @return [NotionRubyMapping::List, String]
|
52
|
+
def query_database(query = Query.new, dry_run: false)
|
53
|
+
if dry_run
|
54
|
+
Base.dry_run_script :post, @nc.query_database_path(@id), query.query_json
|
55
|
+
else
|
56
|
+
response = @nc.database_query @id, query
|
57
|
+
List.new json: response, database: self, query: query
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# @param [Array] names
|
62
|
+
# @return [Array<NotionRubyMapping::Property>]
|
63
|
+
def remove_properties(*names)
|
64
|
+
names.map { |n| properties[n] }.each(&:remove)
|
65
|
+
end
|
66
|
+
|
67
|
+
# @return [Hash] created json for update database
|
68
|
+
def update_property_schema_json
|
69
|
+
@payload.update_property_schema_json @property_cache, database_title
|
70
|
+
end
|
71
|
+
|
27
72
|
protected
|
28
73
|
|
74
|
+
def create(dry_run: false)
|
75
|
+
if dry_run
|
76
|
+
dry_run_script :post, @nc.databases_path, :property_schema_json
|
77
|
+
else
|
78
|
+
json = @nc.create_database_request(property_schema_json)
|
79
|
+
@new_record = false
|
80
|
+
update_json json
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
29
84
|
# @return [Hash]
|
30
85
|
def reload_json
|
31
86
|
@nc.database_request @id
|
32
87
|
end
|
88
|
+
|
89
|
+
# @return [NotionRubyMapping::Base, String]
|
90
|
+
def update(dry_run: false)
|
91
|
+
if dry_run
|
92
|
+
dry_run_script :patch, @nc.database_path(@id), :update_property_schema_json
|
93
|
+
else
|
94
|
+
update_json @nc.update_database_request(@id, update_property_schema_json)
|
95
|
+
end
|
96
|
+
end
|
33
97
|
end
|
34
98
|
end
|