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
@@ -5,64 +5,89 @@ module NotionRubyMapping
|
|
5
5
|
class DateProperty < DateBaseProperty
|
6
6
|
TYPE = "date"
|
7
7
|
|
8
|
+
### Public announced methods
|
9
|
+
|
10
|
+
## Common methods
|
11
|
+
|
12
|
+
# @return [Hash]
|
13
|
+
def date
|
14
|
+
@json
|
15
|
+
end
|
16
|
+
|
17
|
+
## Page property only methods
|
18
|
+
|
19
|
+
# @return [Date, Time, DateTime, String]
|
20
|
+
def end_date
|
21
|
+
@json["end"]
|
22
|
+
end
|
23
|
+
|
24
|
+
# @param [Date, Time, DateTime, String] edt
|
25
|
+
def end_date=(edt)
|
26
|
+
@will_update = true
|
27
|
+
sdt = start_date
|
28
|
+
edt = nil if sdt.class != edt.class || sdt > edt
|
29
|
+
@json["end"] = edt
|
30
|
+
end
|
31
|
+
|
32
|
+
# @return [Date, Time, DateTime, String]
|
33
|
+
def start_date
|
34
|
+
@json["start"]
|
35
|
+
end
|
36
|
+
|
37
|
+
# @param [Date, Time, DateTime, String] sdt
|
38
|
+
def start_date=(sdt)
|
39
|
+
@will_update = true
|
40
|
+
edt = end_date
|
41
|
+
@json["end"] = nil if sdt.class != edt.class || sdt > edt
|
42
|
+
@json["start"] = sdt
|
43
|
+
end
|
44
|
+
|
45
|
+
# @return [String]
|
46
|
+
def time_zone
|
47
|
+
@json["time_zone"]
|
48
|
+
end
|
49
|
+
|
50
|
+
# @param [String] tzone
|
51
|
+
def time_zone=(tzone)
|
52
|
+
@will_update = true
|
53
|
+
@json["time_zone"] = tzone
|
54
|
+
end
|
55
|
+
|
56
|
+
### Not public announced methods
|
57
|
+
|
58
|
+
## Common methods
|
59
|
+
|
8
60
|
# @param [String] name
|
9
61
|
# @param [Hash] json
|
10
62
|
# @param [Date, Time, DateTime, String, nil] start_date
|
11
63
|
# @param [Date, Time, DateTime, String, nil] end_date
|
12
64
|
# @param [String, nil] time_zone
|
13
|
-
def initialize(name, will_update: false, json: nil, start_date: nil, end_date: nil, time_zone: nil)
|
14
|
-
super name, will_update: will_update
|
15
|
-
@
|
16
|
-
|
17
|
-
|
65
|
+
def initialize(name, will_update: false, base_type: :page, json: nil, start_date: nil, end_date: nil, time_zone: nil)
|
66
|
+
super name, will_update: will_update, base_type: base_type
|
67
|
+
@json = json || {}
|
68
|
+
return if database?
|
69
|
+
|
70
|
+
@json = json || {}
|
71
|
+
@json["start"] = start_date if start_date
|
72
|
+
@json["end"] = end_date if end_date
|
73
|
+
@json["time_zone"] = time_zone if time_zone
|
18
74
|
end
|
19
75
|
|
76
|
+
## Page property only methods
|
77
|
+
|
20
78
|
# @return [Hash] created json
|
21
79
|
def property_values_json
|
80
|
+
assert_page_property __method__
|
22
81
|
{
|
23
82
|
@name => {
|
24
83
|
"type" => "date",
|
25
84
|
"date" => {
|
26
|
-
"start" => value_str(@
|
27
|
-
"end" => value_str(@
|
28
|
-
"time_zone" => @time_zone,
|
85
|
+
"start" => value_str(@json["start"]),
|
86
|
+
"end" => value_str(@json["end"]),
|
87
|
+
"time_zone" => @json["time_zone"],
|
29
88
|
},
|
30
89
|
},
|
31
90
|
}
|
32
91
|
end
|
33
|
-
|
34
|
-
# @param [Date, Time, DateTime, String] start_date
|
35
|
-
# @return [Date, Time, DateTime, String]
|
36
|
-
def start_date=(start_date)
|
37
|
-
@will_update = true
|
38
|
-
@start_date = start_date
|
39
|
-
@end_date = nil if @start_date.class != @end_date.class || @start_date > @end_date
|
40
|
-
@start_date
|
41
|
-
end
|
42
|
-
|
43
|
-
# @param [Date, Time, DateTime, String] end_date
|
44
|
-
# @return [Date, Time, DateTime, String]
|
45
|
-
def end_date=(end_date)
|
46
|
-
@will_update = true
|
47
|
-
@end_date = end_date
|
48
|
-
@end_date = nil if @start_date.class != @end_date.class || @start_date > @end_date
|
49
|
-
@end_date
|
50
|
-
end
|
51
|
-
|
52
|
-
# @param [String] time_zone
|
53
|
-
# @return [Array, nil] settled array
|
54
|
-
def time_zone=(time_zone)
|
55
|
-
@will_update = true
|
56
|
-
@time_zone = time_zone
|
57
|
-
end
|
58
|
-
|
59
|
-
# @param [Hash] json
|
60
|
-
def update_from_json(json)
|
61
|
-
@will_update = false
|
62
|
-
jd = json["date"]
|
63
|
-
@start_date = jd["start"]
|
64
|
-
@end_date = jd["end"]
|
65
|
-
@time_zone = jd["time_zone"]
|
66
|
-
end
|
67
92
|
end
|
68
93
|
end
|
@@ -9,28 +9,38 @@ module NotionRubyMapping
|
|
9
9
|
include IsEmptyIsNotEmpty
|
10
10
|
TYPE = "email"
|
11
11
|
|
12
|
-
|
13
|
-
# @param [String] email email value (optional)
|
14
|
-
def initialize(name, will_update: false, email: nil)
|
15
|
-
super name, will_update: will_update
|
16
|
-
@email = email
|
17
|
-
end
|
18
|
-
attr_reader :email
|
12
|
+
### Public announced methods
|
19
13
|
|
20
|
-
|
21
|
-
def update_from_json(json)
|
22
|
-
@will_update = false
|
23
|
-
@email = json["email"]
|
24
|
-
end
|
14
|
+
## Common methods
|
25
15
|
|
26
|
-
# @return [Hash]
|
27
|
-
def
|
28
|
-
|
16
|
+
# @return [String, Hash]
|
17
|
+
def email
|
18
|
+
@json
|
29
19
|
end
|
30
20
|
|
21
|
+
## Page property only methods
|
22
|
+
|
23
|
+
# @param [String] str
|
31
24
|
def email=(email)
|
32
25
|
@will_update = true
|
33
|
-
@
|
26
|
+
@json = email
|
27
|
+
end
|
28
|
+
|
29
|
+
### Not public announced methods
|
30
|
+
|
31
|
+
## Common methods
|
32
|
+
|
33
|
+
# @param [String] name Property name
|
34
|
+
# @param [String] email email value (optional)
|
35
|
+
def initialize(name, will_update: false, base_type: :page, json: nil)
|
36
|
+
super name, will_update: will_update, base_type: base_type
|
37
|
+
@json = json || {}
|
38
|
+
end
|
39
|
+
|
40
|
+
# @return [Hash]
|
41
|
+
def property_values_json
|
42
|
+
assert_page_property __method__
|
43
|
+
{@name => {"email" => @json, "type" => "email"}}
|
34
44
|
end
|
35
45
|
end
|
36
46
|
end
|
@@ -6,13 +6,49 @@ module NotionRubyMapping
|
|
6
6
|
include IsEmptyIsNotEmpty
|
7
7
|
TYPE = "files"
|
8
8
|
|
9
|
+
### Public announced methods
|
10
|
+
|
11
|
+
## Common methods
|
12
|
+
|
13
|
+
# @return [Hash]
|
14
|
+
def files
|
15
|
+
@json
|
16
|
+
end
|
17
|
+
|
18
|
+
## Page property only methods
|
19
|
+
|
20
|
+
def files=(files = [])
|
21
|
+
@will_update = true
|
22
|
+
@json = Array(files).map { |url| url_to_hash url }
|
23
|
+
end
|
24
|
+
|
25
|
+
### Not public announced methods
|
26
|
+
|
27
|
+
## Common methods
|
28
|
+
|
9
29
|
# @param [String] name Property name
|
10
30
|
# @param [String] files files value (optional)
|
11
|
-
def initialize(name, will_update: false, json: nil, files: [])
|
12
|
-
super name, will_update: will_update
|
13
|
-
|
31
|
+
def initialize(name, will_update: false, base_type: :page, json: nil, files: [])
|
32
|
+
super name, will_update: will_update, base_type: base_type
|
33
|
+
if database?
|
34
|
+
@json = json || {}
|
35
|
+
else
|
36
|
+
@json = json || []
|
37
|
+
@json = Array(files).map { |url| url_to_hash url } unless files.empty?
|
38
|
+
end
|
14
39
|
end
|
15
|
-
|
40
|
+
|
41
|
+
# @return [Hash]
|
42
|
+
def property_values_json
|
43
|
+
assert_page_property __method__
|
44
|
+
if @json.map { |f| f["type"] }.include? "file"
|
45
|
+
{}
|
46
|
+
else
|
47
|
+
{@name => {"files" => @json, "type" => "files"}}
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
protected
|
16
52
|
|
17
53
|
# @param [String] url
|
18
54
|
# @return [Hash]
|
@@ -25,25 +61,5 @@ module NotionRubyMapping
|
|
25
61
|
},
|
26
62
|
}
|
27
63
|
end
|
28
|
-
|
29
|
-
# @param [Hash] json
|
30
|
-
def update_from_json(json)
|
31
|
-
@will_update = false
|
32
|
-
@files = json["files"]
|
33
|
-
end
|
34
|
-
|
35
|
-
# @return [Hash]
|
36
|
-
def property_values_json
|
37
|
-
if @files.map { |f| f["type"] }.include? "file"
|
38
|
-
{}
|
39
|
-
else
|
40
|
-
{@name => {"files" => @files, "type" => "files"}}
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def files=(files = [])
|
45
|
-
@will_update = true
|
46
|
-
@files = Array(files).map { |url| url_to_hash url } || []
|
47
|
-
end
|
48
64
|
end
|
49
65
|
end
|
@@ -8,22 +8,63 @@ module NotionRubyMapping
|
|
8
8
|
include GreaterThanLessThan
|
9
9
|
TYPE = "formula"
|
10
10
|
|
11
|
+
### Public announced methods
|
12
|
+
|
13
|
+
## Common methods
|
14
|
+
|
15
|
+
# @return [Hash]
|
16
|
+
def formula
|
17
|
+
@json
|
18
|
+
end
|
19
|
+
|
20
|
+
## Database property only methods
|
21
|
+
|
22
|
+
def formula_expression
|
23
|
+
assert_database_property __method__
|
24
|
+
@json["expression"]
|
25
|
+
end
|
26
|
+
|
27
|
+
# @param [String] formula
|
28
|
+
def formula_expression=(f_e)
|
29
|
+
assert_database_property __method__
|
30
|
+
@will_update = true
|
31
|
+
@json["expression"] = f_e
|
32
|
+
end
|
33
|
+
|
34
|
+
### Not public announced methods
|
35
|
+
|
36
|
+
## Common methods
|
37
|
+
|
11
38
|
# @param [String] name
|
12
39
|
# @param [Hash] json
|
13
|
-
def initialize(name, json: nil)
|
14
|
-
super name, will_update:
|
15
|
-
@json = json
|
40
|
+
def initialize(name, will_update: false, base_type: :page, json: nil, formula: nil)
|
41
|
+
super name, will_update: will_update, base_type: base_type
|
42
|
+
@json = json || {}
|
43
|
+
return unless database?
|
44
|
+
|
45
|
+
@json["expression"] = formula if formula
|
16
46
|
end
|
17
47
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
48
|
+
## Database property only methods
|
49
|
+
|
50
|
+
# @return [Hash]
|
51
|
+
def update_property_schema_json
|
52
|
+
assert_database_property __method__
|
53
|
+
ans = super
|
54
|
+
return ans if ans != {} || !@will_update
|
55
|
+
|
56
|
+
ans[@name] ||= {}
|
57
|
+
ans[@name]["formula"] = @json
|
58
|
+
ans
|
22
59
|
end
|
23
60
|
|
24
|
-
|
25
|
-
|
26
|
-
|
61
|
+
protected
|
62
|
+
|
63
|
+
## Database property only methods
|
64
|
+
|
65
|
+
# @return [Hash]
|
66
|
+
def property_schema_json_sub
|
67
|
+
{"expression" => formula_expression}
|
27
68
|
end
|
28
69
|
end
|
29
70
|
end
|
@@ -5,24 +5,37 @@ module NotionRubyMapping
|
|
5
5
|
class LastEditedByProperty < MultiProperty
|
6
6
|
TYPE = "last_edited_by"
|
7
7
|
|
8
|
+
### Public announced methods
|
9
|
+
|
10
|
+
## Common methods
|
11
|
+
|
12
|
+
# @return [NotionRubyMapping::UserObject, Hash]
|
13
|
+
def last_edited_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,
|
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
32
|
attr_reader :user
|
16
33
|
|
17
34
|
# @param [Hash] json
|
18
35
|
def update_from_json(json)
|
19
36
|
@will_update = false
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
# @return [Hash] {} created_time cannot be updated
|
24
|
-
def property_values_json
|
25
|
-
{}
|
37
|
+
leb = json["last_edited_by"]
|
38
|
+
@json = database? ? leb : UserObject.new(json: leb)
|
26
39
|
end
|
27
40
|
end
|
28
41
|
end
|
@@ -5,23 +5,25 @@ module NotionRubyMapping
|
|
5
5
|
class LastEditedTimeProperty < DateBaseProperty
|
6
6
|
TYPE = "last_edited_time"
|
7
7
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
super name, will_update: false
|
12
|
-
@last_edited_time = last_edited_time
|
13
|
-
end
|
14
|
-
attr_reader :last_edited_time
|
8
|
+
### Public announced methods
|
9
|
+
|
10
|
+
## Common methods
|
15
11
|
|
16
|
-
# @
|
17
|
-
def
|
18
|
-
@
|
19
|
-
@last_edited_time = json["last_edited_time"]
|
12
|
+
# @return [Date, Hash]
|
13
|
+
def last_edited_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 last_edited_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
|
@@ -16,6 +16,8 @@ module NotionRubyMapping
|
|
16
16
|
end
|
17
17
|
attr_reader :has_more
|
18
18
|
|
19
|
+
### Public announced methods
|
20
|
+
|
19
21
|
def each
|
20
22
|
return enum_for(:each) unless block_given?
|
21
23
|
|
@@ -53,6 +55,7 @@ module NotionRubyMapping
|
|
53
55
|
|
54
56
|
private
|
55
57
|
|
58
|
+
# @return [Hash]
|
56
59
|
def results
|
57
60
|
@json["results"]
|
58
61
|
end
|
@@ -7,41 +7,103 @@ module NotionRubyMapping
|
|
7
7
|
include IsEmptyIsNotEmpty
|
8
8
|
TYPE = "multi_select"
|
9
9
|
|
10
|
+
### Public announced methods
|
11
|
+
|
12
|
+
## Common methods
|
13
|
+
|
14
|
+
# @return [Array, Hash]
|
15
|
+
def multi_select
|
16
|
+
@json
|
17
|
+
end
|
18
|
+
|
19
|
+
# @return [Array]
|
20
|
+
def multi_select_names
|
21
|
+
mshs = @base_type == :page ? @json : @json["options"]
|
22
|
+
mshs.map { |h| h["name"] }
|
23
|
+
end
|
24
|
+
|
25
|
+
## Database property only methods
|
26
|
+
|
27
|
+
# @param [String] name
|
28
|
+
# @param [String] color
|
29
|
+
# @return [Array] added array
|
30
|
+
def add_multi_select_options(name:, color:)
|
31
|
+
edit_multi_select_options << {"name" => name, "color" => color}
|
32
|
+
end
|
33
|
+
|
34
|
+
# @return [Array] copyed multi select options
|
35
|
+
def edit_multi_select_options
|
36
|
+
assert_database_property __method__
|
37
|
+
@will_update = true
|
38
|
+
@json["options"] ||= []
|
39
|
+
end
|
40
|
+
|
41
|
+
# @return [Array]
|
42
|
+
def multi_select_options
|
43
|
+
assert_database_property __method__
|
44
|
+
@json["options"] || []
|
45
|
+
end
|
46
|
+
|
47
|
+
## Page property only methods
|
48
|
+
|
49
|
+
# @param [Hash] multi_select
|
50
|
+
# @return [Array, nil] settled array
|
51
|
+
def multi_select=(multi_select)
|
52
|
+
@will_update = true
|
53
|
+
@json = multi_select ? Array(multi_select).map { |ms| {"name" => ms} } : []
|
54
|
+
end
|
55
|
+
|
56
|
+
### Not public announced methods
|
57
|
+
|
58
|
+
## Common methods
|
59
|
+
|
10
60
|
# @param [String] name
|
11
61
|
# @param [Hash] json
|
12
|
-
# @param [Array] multi_select
|
13
|
-
def initialize(name, will_update: false, json: nil, multi_select: nil)
|
14
|
-
super name, will_update: will_update
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
62
|
+
# @param [Array<String>, String] multi_select
|
63
|
+
def initialize(name, will_update: false, base_type: :page, json: nil, multi_select: nil)
|
64
|
+
super name, will_update: will_update, base_type: base_type
|
65
|
+
if database?
|
66
|
+
@json = json || {"options" => []}
|
67
|
+
else
|
68
|
+
@json = json || []
|
69
|
+
@json = Array(multi_select).map { |ms| {"name" => ms} } unless multi_select.nil?
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
## Database property only methods
|
74
|
+
|
75
|
+
# @return [Hash]
|
76
|
+
def update_property_schema_json
|
77
|
+
assert_database_property __method__
|
78
|
+
ans = super
|
79
|
+
return ans if ans != {} || !@will_update
|
80
|
+
|
81
|
+
ans[@name] ||= {}
|
82
|
+
ans[@name]["multi_select"] ||= {}
|
83
|
+
ans[@name]["multi_select"]["options"] = @json["options"]
|
84
|
+
ans
|
22
85
|
end
|
23
86
|
|
87
|
+
## Page property only methods
|
88
|
+
|
24
89
|
# @return [Hash] created json
|
25
90
|
def property_values_json
|
91
|
+
assert_page_property __method__
|
26
92
|
{
|
27
93
|
@name => {
|
28
94
|
"type" => "multi_select",
|
29
|
-
"multi_select" => @
|
95
|
+
"multi_select" => @json,
|
30
96
|
},
|
31
97
|
}
|
32
98
|
end
|
33
99
|
|
34
|
-
|
35
|
-
# @return [Array, nil] settled array
|
36
|
-
def multi_select=(multi_select)
|
37
|
-
@will_update = true
|
38
|
-
@multi_select = multi_select ? Array(multi_select) : []
|
39
|
-
end
|
100
|
+
protected
|
40
101
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
102
|
+
## Database property only methods
|
103
|
+
|
104
|
+
# @return [Hash]
|
105
|
+
def property_schema_json_sub
|
106
|
+
{"options" => edit_multi_select_options}
|
45
107
|
end
|
46
108
|
end
|
47
109
|
end
|
@@ -36,6 +36,18 @@ module NotionRubyMapping
|
|
36
36
|
|
37
37
|
### create path methods
|
38
38
|
|
39
|
+
# @param [String] database_id
|
40
|
+
# @return [String (frozen)] page_path
|
41
|
+
def database_path(database_id)
|
42
|
+
"v1/databases/#{database_id}"
|
43
|
+
end
|
44
|
+
|
45
|
+
# @param [String] database_id
|
46
|
+
# @return [String (frozen)] page_path
|
47
|
+
def databases_path
|
48
|
+
"v1/databases"
|
49
|
+
end
|
50
|
+
|
39
51
|
# @param [String] page_id
|
40
52
|
# @return [String (frozen)] page_path
|
41
53
|
def page_path(page_id)
|
@@ -47,12 +59,6 @@ module NotionRubyMapping
|
|
47
59
|
"v1/pages"
|
48
60
|
end
|
49
61
|
|
50
|
-
# @param [String] database_id
|
51
|
-
# @return [String (frozen)] page_path
|
52
|
-
def database_path(database_id)
|
53
|
-
"v1/databases/#{database_id}"
|
54
|
-
end
|
55
|
-
|
56
62
|
# @param [String] block_id
|
57
63
|
# @return [String (frozen)] page_path
|
58
64
|
def block_path(block_id)
|
@@ -135,6 +141,10 @@ module NotionRubyMapping
|
|
135
141
|
request :post, "v1/pages", payload
|
136
142
|
end
|
137
143
|
|
144
|
+
def create_database_request(payload)
|
145
|
+
request :post, databases_path, payload
|
146
|
+
end
|
147
|
+
|
138
148
|
# @param [String] id id string with "-"
|
139
149
|
# @return [String] id without "-"
|
140
150
|
def hex_id(id)
|
@@ -184,13 +194,7 @@ module NotionRubyMapping
|
|
184
194
|
# @param [NotionRubyMapping::Query] query query object
|
185
195
|
# @return [NotionRubyMapping::Base] List object
|
186
196
|
def database_query(id, query)
|
187
|
-
|
188
|
-
parameters[:filter] = query.filter unless query.filter.empty?
|
189
|
-
parameters[:sorts] = query.sort unless query.sort.empty?
|
190
|
-
parameters[:start_cursor] = query.start_cursor if query.start_cursor
|
191
|
-
parameters[:page_size] = query.page_size if query.page_size
|
192
|
-
|
193
|
-
Base.create_from_json database_query_request(id, parameters)
|
197
|
+
Base.create_from_json database_query_request(id, query.query_json)
|
194
198
|
end
|
195
199
|
|
196
200
|
# @param [String] id page_id (with or without "-")
|