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,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 "-")
|