notion_ruby_mapping 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -5,41 +5,94 @@ module NotionRubyMapping
|
|
5
5
|
class RelationProperty < MultiProperty
|
6
6
|
TYPE = "relation"
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
elsif json
|
16
|
-
json.map { |r| r["id"] }
|
17
|
-
else
|
18
|
-
[]
|
19
|
-
end
|
8
|
+
### Public announced methods
|
9
|
+
|
10
|
+
## Common methods
|
11
|
+
|
12
|
+
# @return [Hash, Array]
|
13
|
+
def relation
|
14
|
+
@json
|
20
15
|
end
|
21
16
|
|
22
|
-
|
23
|
-
|
24
|
-
|
17
|
+
## Database property only methods
|
18
|
+
|
19
|
+
# @return [String] relation database_id
|
20
|
+
def relation_database_id
|
21
|
+
assert_database_property __method__
|
22
|
+
@json["database_id"]
|
23
|
+
end
|
24
|
+
|
25
|
+
# @param [String] database_id
|
26
|
+
# @param [String] synced_property_name
|
27
|
+
def replace_relation_database(database_id: nil, synced_property_name: nil)
|
28
|
+
assert_database_property __method__
|
25
29
|
@will_update = true
|
26
|
-
@
|
30
|
+
@json["database_id"] = database_id if database_id
|
31
|
+
@json["synced_property_name"] = synced_property_name if synced_property_name
|
32
|
+
@json
|
27
33
|
end
|
28
34
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
35
|
+
### Not public announced methods
|
36
|
+
|
37
|
+
## Common methods
|
38
|
+
|
39
|
+
# @param [String] name
|
40
|
+
# @param [Hash, Array] json
|
41
|
+
# @param [String, Array] relation
|
42
|
+
def initialize(name, will_update: false, json: nil, relation: nil, base_type: :page)
|
43
|
+
super name, will_update: will_update, base_type: base_type
|
44
|
+
@json = if database?
|
45
|
+
json || {}
|
46
|
+
elsif relation
|
47
|
+
Array(relation).map { |r| {"id" => r} }
|
48
|
+
elsif json
|
49
|
+
json
|
50
|
+
else
|
51
|
+
[]
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
## Database property only methods
|
56
|
+
|
57
|
+
# @return [Hash]
|
58
|
+
def update_property_schema_json
|
59
|
+
assert_database_property __method__
|
60
|
+
ans = super
|
61
|
+
return ans if ans != {} || !@will_update
|
62
|
+
|
63
|
+
ans[@name] ||= {}
|
64
|
+
ans[@name]["relation"] = @json
|
65
|
+
ans
|
66
|
+
end
|
67
|
+
|
68
|
+
## Page property only methods
|
69
|
+
|
70
|
+
# @param [String, Array<String>] relation a id or Array of id
|
71
|
+
# @return [Array] settled relation Array
|
72
|
+
def relation=(page_ids)
|
73
|
+
assert_page_property __method__
|
74
|
+
@will_update = true
|
75
|
+
@json = Array(page_ids).map { |r| {"id" => r} }
|
33
76
|
end
|
34
77
|
|
35
78
|
# @return [Hash] created json
|
36
79
|
def property_values_json
|
80
|
+
assert_page_property __method__
|
37
81
|
{
|
38
82
|
@name => {
|
39
83
|
"type" => "relation",
|
40
|
-
"relation" => @
|
84
|
+
"relation" => @json,
|
41
85
|
},
|
42
86
|
}
|
43
87
|
end
|
88
|
+
|
89
|
+
protected
|
90
|
+
|
91
|
+
## Database property only methods
|
92
|
+
|
93
|
+
# @return [Hash]
|
94
|
+
def property_schema_json_sub
|
95
|
+
{"database_id" => relation_database_id}
|
96
|
+
end
|
44
97
|
end
|
45
98
|
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NotionRubyMapping
|
4
|
+
# RichTextObject
|
5
|
+
class RichTextArray
|
6
|
+
include Enumerable
|
7
|
+
|
8
|
+
# @param [Array] json
|
9
|
+
def initialize(key, json: nil, text_objects: nil, will_update: false)
|
10
|
+
@key = key
|
11
|
+
@rich_text_objects = if json
|
12
|
+
create_from_json(json)
|
13
|
+
elsif text_objects
|
14
|
+
Array(text_objects).map do |to|
|
15
|
+
RichTextObject.text_object to
|
16
|
+
end
|
17
|
+
else
|
18
|
+
[]
|
19
|
+
end
|
20
|
+
@will_update = will_update
|
21
|
+
end
|
22
|
+
|
23
|
+
# @param [Array] json
|
24
|
+
# @return [Array] RichTextArray
|
25
|
+
def create_from_json(json = [])
|
26
|
+
json.map { |rt_json| RichTextObject.create_from_json rt_json }
|
27
|
+
end
|
28
|
+
|
29
|
+
# @param [Numeric] index
|
30
|
+
# @return [NotionRubyMapping::RichTextObject] removed RichTextObject
|
31
|
+
def delete_at(index)
|
32
|
+
@will_update = true
|
33
|
+
@rich_text_objects.delete_at index
|
34
|
+
end
|
35
|
+
|
36
|
+
# @param [Proc] block
|
37
|
+
# @return [Enumerator]
|
38
|
+
def each(&block)
|
39
|
+
return enum_for(:each) unless block
|
40
|
+
|
41
|
+
@rich_text_objects.each(&block)
|
42
|
+
end
|
43
|
+
|
44
|
+
# @return [String]
|
45
|
+
def full_text
|
46
|
+
map(&:text).join ""
|
47
|
+
end
|
48
|
+
|
49
|
+
def property_values_json
|
50
|
+
will_update ? @rich_text_objects.map(&:property_values_json) : []
|
51
|
+
end
|
52
|
+
|
53
|
+
def property_schema_json
|
54
|
+
will_update ? {@key => @rich_text_objects.map(&:property_values_json)} : {}
|
55
|
+
end
|
56
|
+
|
57
|
+
def update_property_schema_json
|
58
|
+
will_update ? {@key => @rich_text_objects.map(&:property_values_json)} : {}
|
59
|
+
end
|
60
|
+
|
61
|
+
# @return [TrueClass, FalseClass] true if it will update
|
62
|
+
def will_update
|
63
|
+
@will_update || @rich_text_objects.map(&:will_update).any?
|
64
|
+
end
|
65
|
+
|
66
|
+
# @param [String, RichTextObject] to
|
67
|
+
# @return [NotionRubyMapping::RichTextObject] added RichTextObject
|
68
|
+
def <<(to)
|
69
|
+
@will_update = true
|
70
|
+
rto = RichTextObject.text_object(to)
|
71
|
+
@rich_text_objects << rto
|
72
|
+
rto
|
73
|
+
end
|
74
|
+
|
75
|
+
# @param [Numeric] index index number
|
76
|
+
# @return [RichTextObject] selected RichTextObject
|
77
|
+
def [](index)
|
78
|
+
@rich_text_objects[index]
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -5,14 +5,25 @@ module NotionRubyMapping
|
|
5
5
|
class RichTextProperty < TextProperty
|
6
6
|
TYPE = "rich_text"
|
7
7
|
|
8
|
+
### Not public announced methods
|
9
|
+
|
10
|
+
## Common methods
|
11
|
+
|
8
12
|
# @param [Hash] json
|
9
13
|
def update_from_json(json)
|
10
14
|
@will_update = false
|
11
|
-
|
15
|
+
if database?
|
16
|
+
@json = json["rich_text"] || {}
|
17
|
+
else
|
18
|
+
@text_objects = RichTextArray.new "rich_text", json: json["rich_text"]
|
19
|
+
end
|
12
20
|
end
|
13
21
|
|
22
|
+
## Page property only methods
|
23
|
+
|
14
24
|
# @return [Hash] created json
|
15
25
|
def property_values_json
|
26
|
+
assert_page_property __method__
|
16
27
|
text_json = @text_objects.map(&:property_values_json)
|
17
28
|
{
|
18
29
|
@name => {
|
@@ -8,22 +8,94 @@ module NotionRubyMapping
|
|
8
8
|
include GreaterThanLessThan
|
9
9
|
TYPE = "rollup"
|
10
10
|
|
11
|
+
### Public announced methods
|
12
|
+
|
13
|
+
## Common methods
|
14
|
+
|
15
|
+
# @return [Hash]
|
16
|
+
def rollup
|
17
|
+
@json
|
18
|
+
end
|
19
|
+
|
20
|
+
## Database property only methods
|
21
|
+
|
22
|
+
# @return [String] new or settled function
|
23
|
+
def function
|
24
|
+
assert_database_property __method__
|
25
|
+
@json["function"]
|
26
|
+
end
|
27
|
+
|
28
|
+
# @param [String] func
|
29
|
+
def function=(func)
|
30
|
+
assert_database_property __method__
|
31
|
+
@will_update = true
|
32
|
+
@json["function"] = func
|
33
|
+
end
|
34
|
+
|
35
|
+
# @return [String] new or settled relation_property_name
|
36
|
+
def relation_property_name
|
37
|
+
assert_database_property __method__
|
38
|
+
@json["relation_property_name"]
|
39
|
+
end
|
40
|
+
|
41
|
+
# @param [String] rpn
|
42
|
+
def relation_property_name=(rpn)
|
43
|
+
assert_database_property __method__
|
44
|
+
@will_update = true
|
45
|
+
@json["relation_property_name"] = rpn
|
46
|
+
end
|
47
|
+
|
48
|
+
# @return [String] new or settled rollup_property_name
|
49
|
+
def rollup_property_name
|
50
|
+
assert_database_property __method__
|
51
|
+
@json["rollup_property_name"]
|
52
|
+
end
|
53
|
+
|
54
|
+
# @param [String] rpn
|
55
|
+
def rollup_property_name=(rpn)
|
56
|
+
assert_database_property __method__
|
57
|
+
@will_update = true
|
58
|
+
@json["rollup_property_name"] = rpn
|
59
|
+
end
|
60
|
+
|
61
|
+
### Not public announced methods
|
62
|
+
|
63
|
+
## Common methods
|
64
|
+
|
11
65
|
# @param [String] name
|
12
66
|
# @param [Hash] json
|
13
|
-
def initialize(name, json: nil)
|
14
|
-
super name, will_update:
|
15
|
-
@json = json
|
67
|
+
def initialize(name, will_update: false, json: nil, base_type: :page)
|
68
|
+
super name, will_update: will_update, base_type: base_type
|
69
|
+
@json = json || {}
|
16
70
|
end
|
17
71
|
|
18
|
-
|
19
|
-
|
20
|
-
|
72
|
+
## Database property only methods
|
73
|
+
|
74
|
+
# @return [Hash]
|
75
|
+
def update_property_schema_json
|
76
|
+
assert_database_property __method__
|
77
|
+
ans = super
|
78
|
+
return ans if ans != {} || !@will_update
|
79
|
+
|
80
|
+
ans[@name] ||= {}
|
81
|
+
ans[@name]["rollup"] ||= {}
|
82
|
+
ans[@name]["rollup"]["function"] = function
|
83
|
+
ans[@name]["rollup"]["relation_property_name"] = relation_property_name
|
84
|
+
ans[@name]["rollup"]["rollup_property_name"] = rollup_property_name
|
85
|
+
ans
|
21
86
|
end
|
22
87
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
88
|
+
protected
|
89
|
+
|
90
|
+
## Database property only methods
|
91
|
+
|
92
|
+
# @return [Hash]
|
93
|
+
def property_schema_json_sub
|
94
|
+
{
|
95
|
+
"function" => function,
|
96
|
+
"relation_property_name" => relation_property_name,
|
97
|
+
"rollup_property_name" => rollup_property_name,
|
98
|
+
}
|
27
99
|
end
|
28
100
|
end
|
29
101
|
end
|
@@ -7,30 +7,105 @@ module NotionRubyMapping
|
|
7
7
|
include IsEmptyIsNotEmpty
|
8
8
|
TYPE = "select"
|
9
9
|
|
10
|
+
### Public announced methods
|
11
|
+
|
12
|
+
## Common methods
|
13
|
+
|
14
|
+
# @return [Hash]
|
15
|
+
def select
|
16
|
+
@json
|
17
|
+
end
|
18
|
+
|
19
|
+
## Page property only methods
|
20
|
+
|
21
|
+
# @return [String]
|
22
|
+
def select_name
|
23
|
+
assert_page_property __method__
|
24
|
+
@json["name"]
|
25
|
+
end
|
26
|
+
|
27
|
+
## Database property only methods
|
28
|
+
|
29
|
+
# @param [String] name
|
30
|
+
# @param [String] color
|
31
|
+
# @return [Array] added array
|
32
|
+
def add_select_options(name:, color:)
|
33
|
+
edit_select_options << {"name" => name, "color" => color}
|
34
|
+
end
|
35
|
+
|
36
|
+
# @return [Array] copyed multi select options
|
37
|
+
def edit_select_options
|
38
|
+
assert_database_property __method__
|
39
|
+
@will_update = true
|
40
|
+
@json["options"] ||= []
|
41
|
+
end
|
42
|
+
|
43
|
+
# @return [Array]
|
44
|
+
def select_options
|
45
|
+
assert_database_property __method__
|
46
|
+
@json["options"] || []
|
47
|
+
end
|
48
|
+
|
49
|
+
# @return [String]
|
50
|
+
def select_names
|
51
|
+
assert_database_property __method__
|
52
|
+
@json["options"].map { |s| s["name"] }
|
53
|
+
end
|
54
|
+
|
55
|
+
## Page property only methods
|
56
|
+
|
57
|
+
# @param [String] select
|
58
|
+
# @return [Hash] settled value
|
59
|
+
def select=(select)
|
60
|
+
@will_update = true
|
61
|
+
@json = {"name" => select}
|
62
|
+
end
|
63
|
+
|
64
|
+
### Not public announced methods
|
65
|
+
|
66
|
+
## Common methods
|
67
|
+
|
10
68
|
# @param [String] name Property name
|
11
69
|
# @param [Hash] json
|
12
70
|
# @param [String] select String value (optional)
|
13
|
-
def initialize(name, will_update: false, json: nil, select: nil)
|
14
|
-
super name, will_update: will_update
|
15
|
-
@
|
71
|
+
def initialize(name, will_update: false, base_type: :page, json: nil, select: nil)
|
72
|
+
super name, will_update: will_update, base_type: base_type
|
73
|
+
@json = if database?
|
74
|
+
json || {"options" => []}
|
75
|
+
else
|
76
|
+
json || {"name" => select}
|
77
|
+
end
|
16
78
|
end
|
17
79
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
80
|
+
## Database property only methods
|
81
|
+
|
82
|
+
# @return [Hash]
|
83
|
+
def update_property_schema_json
|
84
|
+
assert_database_property __method__
|
85
|
+
ans = super
|
86
|
+
return ans if ans != {} || !@will_update
|
87
|
+
|
88
|
+
ans[@name] ||= {}
|
89
|
+
ans[@name]["select"] ||= {}
|
90
|
+
ans[@name]["select"]["options"] = @json["options"]
|
91
|
+
ans
|
22
92
|
end
|
23
93
|
|
94
|
+
## Page property only methods
|
95
|
+
|
24
96
|
# @return [Hash]
|
25
97
|
def property_values_json
|
26
|
-
|
98
|
+
assert_page_property __method__
|
99
|
+
{@name => {"type" => "select", "select" => @json}}
|
27
100
|
end
|
28
101
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
102
|
+
protected
|
103
|
+
|
104
|
+
## Database property only methods
|
105
|
+
|
106
|
+
# @return [Hash]
|
107
|
+
def property_schema_json_sub
|
108
|
+
{"options" => edit_select_options}
|
34
109
|
end
|
35
110
|
end
|
36
111
|
end
|
@@ -14,7 +14,6 @@ module NotionRubyMapping
|
|
14
14
|
attr_reader :text, :will_update
|
15
15
|
|
16
16
|
# @param [String, RichTextObject] value
|
17
|
-
# @return [RichTextObject] self
|
18
17
|
def text=(value)
|
19
18
|
@will_update = true
|
20
19
|
if value.is_a? RichTextObject
|
@@ -24,7 +23,6 @@ module NotionRubyMapping
|
|
24
23
|
@text = value
|
25
24
|
@options["plain_text"] = value
|
26
25
|
end
|
27
|
-
self
|
28
26
|
end
|
29
27
|
|
30
28
|
protected
|
@@ -12,61 +12,35 @@ module NotionRubyMapping
|
|
12
12
|
include StartsWithEndsWith
|
13
13
|
include IsEmptyIsNotEmpty
|
14
14
|
|
15
|
+
### Public announced methods
|
16
|
+
|
17
|
+
## Page property only methods
|
18
|
+
|
19
|
+
attr_reader :text_objects
|
20
|
+
|
21
|
+
def_delegators :@text_objects, :[], :<<, :each, :full_text, :delete_at
|
22
|
+
|
23
|
+
### Not public announced methods
|
24
|
+
|
25
|
+
## Common methods
|
26
|
+
|
15
27
|
# @param [String] name
|
16
|
-
# @param [Hash] json
|
28
|
+
# @param [Hash, Array] json
|
17
29
|
# @param [Array<RichTextObject>] text_objects
|
18
|
-
def initialize(name, will_update: false, json: nil, text_objects: nil)
|
30
|
+
def initialize(name, will_update: false, base_type: :page, json: nil, text_objects: nil)
|
19
31
|
raise StandardError, "TextObject is abstract class. Please use RichTextProperty." if instance_of? TextProperty
|
20
32
|
|
21
|
-
super name, will_update: will_update
|
22
|
-
@text_objects = if
|
23
|
-
|
24
|
-
elsif json
|
25
|
-
json.map { |to| RichTextObject.create_from_json to }
|
33
|
+
super name, will_update: will_update, base_type: base_type
|
34
|
+
@text_objects = if database?
|
35
|
+
json || {}
|
26
36
|
else
|
27
|
-
|
37
|
+
RichTextArray.new "title", json: json, text_objects: text_objects
|
28
38
|
end
|
29
39
|
end
|
30
|
-
attr_reader :text_objects
|
31
40
|
|
32
41
|
# @return [TrueClass, FalseClass] will update?
|
33
42
|
def will_update
|
34
|
-
@will_update || @text_objects.
|
35
|
-
end
|
36
|
-
|
37
|
-
# @param [Proc] block
|
38
|
-
# @return [Enumerator]
|
39
|
-
def each(&block)
|
40
|
-
return enum_for(:each) unless block
|
41
|
-
|
42
|
-
@text_objects.each(&block)
|
43
|
-
end
|
44
|
-
|
45
|
-
# @param [String, RichTextObject] to
|
46
|
-
# @return [NotionRubyMapping::RichTextObject] added RichTextObject
|
47
|
-
def <<(to)
|
48
|
-
@will_update = true
|
49
|
-
rto = RichTextObject.text_object(to)
|
50
|
-
@text_objects << rto
|
51
|
-
rto
|
52
|
-
end
|
53
|
-
|
54
|
-
# @param [Numeric] index index number
|
55
|
-
# @return [RichTextObject] selected RichTextObject
|
56
|
-
def [](index)
|
57
|
-
@text_objects[index]
|
58
|
-
end
|
59
|
-
|
60
|
-
# @param [Numeric] index
|
61
|
-
# @return [NotionRubyMapping::RichTextObject] removed RichTextObject
|
62
|
-
def delete_at(index)
|
63
|
-
@will_update = true
|
64
|
-
@text_objects[index]
|
65
|
-
end
|
66
|
-
|
67
|
-
# @return [String] full_text
|
68
|
-
def full_text
|
69
|
-
map(&:text).join ""
|
43
|
+
@will_update || page? && @text_objects.will_update
|
70
44
|
end
|
71
45
|
end
|
72
46
|
end
|
@@ -5,14 +5,25 @@ module NotionRubyMapping
|
|
5
5
|
class TitleProperty < TextProperty
|
6
6
|
TYPE = "title"
|
7
7
|
|
8
|
+
### Not public announced methods
|
9
|
+
|
10
|
+
## Common methods
|
11
|
+
|
8
12
|
# @param [Hash] json
|
9
13
|
def update_from_json(json)
|
10
14
|
@will_update = false
|
11
|
-
|
15
|
+
if database?
|
16
|
+
@json = json || {}
|
17
|
+
else
|
18
|
+
@text_objects = RichTextArray.new "rich_text", json: json["title"]
|
19
|
+
end
|
12
20
|
end
|
13
21
|
|
22
|
+
## Page property only methods
|
23
|
+
|
14
24
|
# @return [Hash] created json
|
15
25
|
def property_values_json
|
26
|
+
assert_page_property __method__
|
16
27
|
text_json = map(&:property_values_json)
|
17
28
|
{
|
18
29
|
@name => {
|
@@ -9,28 +9,39 @@ module NotionRubyMapping
|
|
9
9
|
include IsEmptyIsNotEmpty
|
10
10
|
TYPE = "url"
|
11
11
|
|
12
|
+
### Public announced methods
|
13
|
+
|
14
|
+
## Common methods
|
15
|
+
|
16
|
+
# @return [String, Hash, nil] url (Page), {} (Database)
|
17
|
+
def url
|
18
|
+
@json
|
19
|
+
end
|
20
|
+
|
21
|
+
## Page property only methods
|
22
|
+
|
23
|
+
def url=(url)
|
24
|
+
@will_update = true
|
25
|
+
@json = url
|
26
|
+
end
|
27
|
+
|
28
|
+
### Not public announced methods
|
29
|
+
|
30
|
+
## Common methods
|
31
|
+
|
12
32
|
# @param [String] name Property name
|
13
33
|
# @param [String] url url value (optional)
|
14
|
-
def initialize(name, will_update: false,
|
15
|
-
super name, will_update: will_update
|
16
|
-
@
|
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 = json || (database? ? {} : nil)
|
17
37
|
end
|
18
|
-
attr_reader :url
|
19
38
|
|
20
|
-
|
21
|
-
def update_from_json(json)
|
22
|
-
@will_update = false
|
23
|
-
@url = json["url"]
|
24
|
-
end
|
39
|
+
## Page property only methods
|
25
40
|
|
26
41
|
# @return [Hash]
|
27
42
|
def property_values_json
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
def url=(url)
|
32
|
-
@will_update = true
|
33
|
-
@url = url
|
43
|
+
assert_page_property __method__
|
44
|
+
{@name => {"url" => @json, "type" => "url"}}
|
34
45
|
end
|
35
46
|
end
|
36
47
|
end
|
@@ -14,11 +14,11 @@ module NotionRubyMapping
|
|
14
14
|
|
15
15
|
# @param [UserObject, String] uo
|
16
16
|
# @return [UserObject] self or created UserObject
|
17
|
-
def self.user_object(
|
18
|
-
if
|
19
|
-
|
17
|
+
def self.user_object(user_id_or_user)
|
18
|
+
if user_id_or_user.is_a? UserObject
|
19
|
+
user_id_or_user
|
20
20
|
else
|
21
|
-
UserObject.new user_id:
|
21
|
+
UserObject.new user_id: user_id_or_user
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
data/lib/notion_ruby_mapping.rb
CHANGED
@@ -6,6 +6,7 @@ require "yaml"
|
|
6
6
|
url_property email_property phone_number_property number_property checkbox_property select_property multi_property
|
7
7
|
multi_select_property date_base_property date_property created_time_property last_edited_time_property
|
8
8
|
people_property created_by_property last_edited_by_property files_property relation_property formula_property
|
9
|
-
rollup_property query payload property_cache rich_text_object text_object mention_object user_object
|
9
|
+
rollup_property query payload property_cache rich_text_object text_object mention_object user_object
|
10
|
+
rich_text_array].each do |k|
|
10
11
|
require_relative "notion_ruby_mapping/#{k}"
|
11
12
|
end
|