notion_ruby_mapping 0.6.7 → 0.7.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 +87 -46
- data/lib/notion_ruby_mapping/blocks/base.rb +8 -6
- data/lib/notion_ruby_mapping/blocks/block.rb +3 -1
- data/lib/notion_ruby_mapping/blocks/database.rb +6 -1
- data/lib/notion_ruby_mapping/blocks/list.rb +19 -5
- data/lib/notion_ruby_mapping/blocks/page.rb +5 -0
- data/lib/notion_ruby_mapping/controllers/discussion_thread.rb +1 -1
- data/lib/notion_ruby_mapping/controllers/notion_cache.rb +38 -2
- data/lib/notion_ruby_mapping/objects/comment_object.rb +1 -1
- data/lib/notion_ruby_mapping/objects/user_object.rb +35 -3
- data/lib/notion_ruby_mapping/properties/checkbox_property.rb +1 -1
- data/lib/notion_ruby_mapping/properties/date_base_property.rb +67 -57
- data/lib/notion_ruby_mapping/properties/date_property.rb +4 -4
- data/lib/notion_ruby_mapping/properties/formula_property.rb +1 -1
- data/lib/notion_ruby_mapping/properties/number_property.rb +1 -1
- data/lib/notion_ruby_mapping/properties/people_property.rb +1 -1
- data/lib/notion_ruby_mapping/properties/property.rb +32 -30
- data/lib/notion_ruby_mapping/properties/relation_property.rb +2 -4
- data/lib/notion_ruby_mapping/properties/title_property.rb +1 -1
- data/lib/notion_ruby_mapping/version.rb +1 -1
- data/lib/notion_ruby_mapping.rb +8 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 378e8aecdacdabc3fd951939783195ed13f2e56665a202a8fe3cf9a2d66e0fab
|
4
|
+
data.tar.gz: d92c738818763b3d4d49d06e1f7c326ec2fc60e5214162a8185c4f7a8c3f501a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0dd2673402bbe54ccd135331c3476f4009af7c68411895f2244288eae761c8975e5bb7e9e39d14ba5d2fc58b96cb38c8dd4f401de2a422d0ebfaeff4c29277ed
|
7
|
+
data.tar.gz: 331fadb7063f5d72c049a7f84907174b3470be179340539796772e31a3ff61dd10222d1638d26688c67fe8470501235c3025c2ebda46ba8942e404cc256aad91
|
data/README.md
CHANGED
@@ -1,97 +1,132 @@
|
|
1
1
|
# notion_ruby_mapping
|
2
2
|
|
3
|
-
Notion Ruby
|
3
|
+
Notion Ruby Mapping is a library that makes it easy to access data on Notion using Ruby. It is currently under development.
|
4
4
|
|
5
|
-
|
5
|
+
Notion Ruby Mapping は Ruby で Notion 上のデータを簡単にアクセスできるようにするライブラリです。現在開発中です。
|
6
|
+
|
7
|
+
Development note is here.
|
8
|
+
|
9
|
+
開発ノートは以下の URL にあります。
|
10
|
+
|
11
|
+
→ [Idea note of "notion_ruby_mapping"](https://www.notion.so/hkob/Idea-note-of-notion_ruby_mapping-3b0a3bb3c171438a830f9579d41df501)
|
6
12
|
|
7
13
|
## Table of Contents
|
8
14
|
|
9
|
-
- [
|
15
|
+
- [notion\_ruby\_mapping](#notion_ruby_mapping)
|
10
16
|
- [Table of Contents](#table-of-contents)
|
11
|
-
- [0. Changes](#0-changes)
|
12
|
-
- [0.1 Changes in v0.
|
13
|
-
- [0.2 Changes in v0.
|
14
|
-
|
15
|
-
- [
|
16
|
-
|
17
|
-
- [2.
|
18
|
-
- [2.
|
19
|
-
- [2.
|
20
|
-
- [2.
|
17
|
+
- [0. History of Major Changes / 主な変更履歴](#0-history-of-major-changes--主な変更履歴)
|
18
|
+
- [0.1 Changes in v0.7.0](#01-changes-in-v070)
|
19
|
+
- [0.2 Changes in v0.6.0](#02-changes-in-v060)
|
20
|
+
- [0.3 Changes in v0.5.0](#03-changes-in-v050)
|
21
|
+
- [1. Installation / インストール方法](#1-installation--インストール方法)
|
22
|
+
- [2. How to use / 利用方法](#2-how-to-use--利用方法)
|
23
|
+
- [2.1 Create a New Integration / インテグレーションの作成](#21-create-a-new-integration--インテグレーションの作成)
|
24
|
+
- [2.2 Set your integration token / インテグレーショントークンの設定](#22-set-your-integration-token--インテグレーショントークンの設定)
|
25
|
+
- [2.3 Sample codes / サンプルコード](#23-sample-codes--サンプルコード)
|
26
|
+
- [2.4. Another example code (Use case) / その他の使用例 (ユースケース)](#24-another-example-code-use-case--その他の使用例-ユースケース)
|
27
|
+
- [2.5 API reference / API リファレンス](#25-api-reference--api-リファレンス)
|
21
28
|
- [3. ChangeLog](#3-changelog)
|
22
|
-
- [4. Contributing](#4-contributing)
|
23
|
-
- [5. License](#5-license)
|
24
|
-
- [6. Code of Conduct](#6-code-of-conduct)
|
29
|
+
- [4. Contributing / 貢献](#4-contributing--貢献)
|
30
|
+
- [5. License / ライセンス](#5-license--ライセンス)
|
31
|
+
- [6. Code of Conduct / 行動規範](#6-code-of-conduct--行動規範)
|
32
|
+
|
33
|
+
## 0. History of Major Changes / 主な変更履歴
|
34
|
+
|
35
|
+
### 0.1 Changes in v0.7.0
|
25
36
|
|
26
|
-
|
37
|
+
Since the number of Japanese users has increased, we decided to include Japanese as well. In addition, we have simplified the method of setting up integration tokens.
|
27
38
|
|
28
|
-
|
39
|
+
日本のユーザが増えたので、日本語も併記することにしました。また、インテグレーショントークンの設定方法を簡単にしました。
|
40
|
+
|
41
|
+
### 0.2 Changes in v0.6.0
|
29
42
|
|
30
43
|
NotionRubyMapping v0.6.0 now supports Notion-Version 2022-06-28.
|
31
|
-
In 2022-06-28, property values are no longer returned when retrieving pages.
|
32
|
-
|
33
|
-
|
44
|
+
~~In 2022-06-28, property values are no longer returned when retrieving pages. NotionRubyMapping temporarily creates a Property Object and calls the retrieve a property item API when a value is needed. Therefore, users do not need to be aware of any differences, and existing scripts should work as they are.~~
|
45
|
+
|
46
|
+
NotionRubyMapping v0.6.0 は、Notion-Version 2022-06-28 に対応しました。
|
47
|
+
~~ 2022-06-28 では、ページを取得する際にプロパティ値を返さなくなりました。NotionRubyMapping は、一時的に Property Object を作成し、値が必要なときにプロパティ項目を取得する API を呼び出します。そのため、ユーザーはこの違いを意識する必要はなく、既存のスクリプトはそのまま動作するはずです。~~
|
34
48
|
|
35
|
-
### 0.
|
49
|
+
### 0.3 Changes in v0.5.0
|
36
50
|
|
37
51
|
NotionRubyMapping v0.5.0 now supports block updates.
|
38
52
|
For efficiency, subclasses are provided under Block class. As a result, they are no longer compatible with the scripts used in v0.4.0.
|
39
53
|
|
40
|
-
|
54
|
+
NotionRubyMapping v0.5.0 では、ブロック更新をサポートするようになりました。
|
55
|
+
効率化のため、Blockクラスの下にサブクラスが提供されています。そのため、v0.4.0で使用していたスクリプトとは互換性がなくなりました。
|
56
|
+
|
57
|
+
## 1. Installation / インストール方法
|
41
58
|
|
42
59
|
Add this line to your application's Gemfile:
|
43
60
|
|
61
|
+
アプリケーションのGemfileに次の行を追加します。:
|
62
|
+
|
44
63
|
```ruby
|
45
64
|
gem 'notion_ruby_mapping'
|
46
65
|
```
|
47
66
|
|
48
67
|
And then execute:
|
49
68
|
|
69
|
+
そして以下を実行してください:
|
70
|
+
|
50
71
|
```shell
|
51
72
|
bundle install
|
52
73
|
```
|
53
74
|
|
54
75
|
Or install it yourself as:
|
55
76
|
|
77
|
+
または、自分でインストールすることもできます。:
|
78
|
+
|
56
79
|
```shell
|
57
80
|
gem install notion_ruby_mapping
|
58
81
|
```
|
59
82
|
|
60
|
-
## 2. How to use
|
83
|
+
## 2. How to use / 利用方法
|
61
84
|
|
62
|
-
### 2.1 Create a New Integration
|
85
|
+
### 2.1 Create a New Integration / インテグレーションの作成
|
63
86
|
|
64
87
|
Please check [Notion documentation](https://developers.notion.com/docs#getting-started).
|
65
88
|
|
66
|
-
|
89
|
+
[Notion documentation](https://developers.notion.com/docs#getting-started) を読んでください。
|
90
|
+
|
91
|
+
### 2.2 Set your integration token / インテグレーショントークンの設定
|
92
|
+
|
93
|
+
From v0.7.0, it can be set with `NotionRubymapping.configuration`.
|
67
94
|
|
68
|
-
|
95
|
+
v0.7.0 から `NotionRubyMapping.configuration` で設定できるようになりました。
|
96
|
+
|
97
|
+
```ruby
|
98
|
+
NotionRubyMapping.configuration do |config|
|
99
|
+
config.notion_token = "secret_XXXXXXXXXXXXXXXXXXXX" # write directly
|
100
|
+
config.wait = 0
|
101
|
+
end
|
102
|
+
```
|
69
103
|
|
70
|
-
```
|
71
|
-
|
72
|
-
NotionCache.instance.create_client ENV["NOTION_API_TOKEN"] # from environment
|
104
|
+
```ruby
|
105
|
+
NotionRubyMapping.configuration { |c| c.notion_token = ENV["NOTION_API_TOKEN"] } # from environment
|
73
106
|
```
|
74
107
|
|
75
|
-
### 2.3 Sample codes
|
108
|
+
### 2.3 Sample codes / サンプルコード
|
76
109
|
|
77
|
-
1. [Database and page access sample](https://www.notion.so/hkob/Database-and-page-access-sample-d30033e707194faf995741167eb2b6f8)
|
78
|
-
2. [Append block children sample](https://www.notion.so/hkob/Append-block-children-sample-3867910a437340be931cf7f2c06443c6)
|
79
|
-
3. [Update block sample](https://www.notion.so/hkob/update-block-sample-5568c1c36fe84f12b83edfe2dda83028)
|
110
|
+
1. [Database and page access sample / データベースとページのアクセスサンプル](https://www.notion.so/hkob/Database-and-page-access-sample-d30033e707194faf995741167eb2b6f8)
|
111
|
+
2. [Append block children sample / 子ブロック要素の追加サンプル](https://www.notion.so/hkob/Append-block-children-sample-3867910a437340be931cf7f2c06443c6)
|
112
|
+
3. [Update block sample / ブロック要素の更新サンプル](https://www.notion.so/hkob/update-block-sample-5568c1c36fe84f12b83edfe2dda83028)
|
80
113
|
|
81
|
-
### 2.4. Another example code (Use case)
|
114
|
+
### 2.4. Another example code (Use case) / その他の使用例 (ユースケース)
|
82
115
|
|
83
|
-
1. [Set icon to all icon unsettled pages](examples/set_icon_to_all_icon_unsettled_pages.md)
|
84
|
-
2. [Renumbering pages](examples/renumbering_pages.md)
|
85
|
-
3. [Change title](examples/change_title.md)
|
86
|
-
4. [Create ER Diagram from Notion database](https://www.notion.so/hkob/notionErDiagram-Sample-1720c2199c534ca08138cde38f31f710)
|
87
|
-
5. [Create Sitemap from Notion pages](https://www.notion.so/hkob/NotionSitemap-sample-14e195c83d024c5382aab09210916c87)
|
116
|
+
1. [Set icon to all icon unsettled pages / 全てのページのアイコンを同一に設定](examples/set_icon_to_all_icon_unsettled_pages.md)
|
117
|
+
2. [Renumbering pages / ページのナンバリング](examples/renumbering_pages.md)
|
118
|
+
3. [Change title / タイトルの変更](examples/change_title.md)
|
119
|
+
4. [Create ER Diagram from Notion database / Notion データベースの ER 図を作成](https://www.notion.so/hkob/notionErDiagram-Sample-1720c2199c534ca08138cde38f31f710)
|
120
|
+
5. [Create Sitemap from Notion pages / Notion page からサイトマップを作成](https://www.notion.so/hkob/NotionSitemap-sample-14e195c83d024c5382aab09210916c87)
|
88
121
|
|
89
|
-
### 2.5 API reference
|
122
|
+
### 2.5 API reference / API リファレンス
|
90
123
|
|
91
124
|
1. [Notion Ruby Mapping Public API reference](https://www.notion.so/hkob/Notion-Ruby-Mapping-Public-API-reference-4091aca15b664299b63e6253b7601fec)
|
92
125
|
|
93
126
|
## 3. ChangeLog
|
94
127
|
|
128
|
+
- 2022/11/28 [v0.7.0] add this_week filter and NotionRubyMapping.configure
|
129
|
+
- 2022/11/13 [v0.6.8] remove error checking for start and end dates, add Users.all, and change Rollup and Formula query specification
|
95
130
|
- 2022/9/2 [v0.6.7] add support for Status property, is_toggleable for headings block, and page property values
|
96
131
|
- 2022/8/10 [v0.6.6] Bug fix(notionSitemap.rb): Skip if child page is empty.
|
97
132
|
- 2022/8/10 [v0.6.5] add notionSitemap.rb, rename createErDiagram to notionErDiagram, and move them to exe directory
|
@@ -126,14 +161,20 @@ NotionCache.instance.create_client ENV["NOTION_API_TOKEN"] # from environment
|
|
126
161
|
- 2022/2/13 added Page#set_icon
|
127
162
|
- 2022/2/13 First commit
|
128
163
|
|
129
|
-
## 4. Contributing
|
164
|
+
## 4. Contributing / 貢献
|
165
|
+
|
166
|
+
Bug reports and pull requests are welcome on GitHub at <https://github.com/hkob/notion_ruby_mapping>. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/hkob/notion_ruby_mapping/blob/main/CODE_OF_CONDUCT.md).
|
130
167
|
|
131
|
-
|
168
|
+
バグレポートとプルリクエストは、<https://github.com/hkob/notion_ruby_mapping>のGithubで大歓迎です。このプロジェクトは、コラボレーションのための安全で居心地の良いスペースであることを目的としており、貢献者は[行動規範](https://github.com/hkob/notion_ruby_mapping/blob/main/code_of_conduct.md)を遵守することが期待されています。
|
132
169
|
|
133
|
-
## 5. License
|
170
|
+
## 5. License / ライセンス
|
134
171
|
|
135
172
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
136
173
|
|
137
|
-
|
174
|
+
GEMは、[MITライセンス](https://opensource.org/licenses/mit)の条件の下でオープンソースとして入手できます。
|
175
|
+
|
176
|
+
## 6. Code of Conduct / 行動規範
|
177
|
+
|
178
|
+
Everyone interacting in the NotionRubyMapping project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/hkob/notion_ruby_mapping/blob/main/CODE_OF_CONDUCT.md).
|
138
179
|
|
139
|
-
|
180
|
+
NotionRubyMappingプロジェクトのコードベース、問題トラッカー、チャットルーム、メーリングリストで対話する全員が[行動規範](https://github.com/hkob/notion_ruby_mapping/blob/main/code_of_conduct.md)に従うことが期待されています。
|
@@ -60,7 +60,7 @@ module NotionRubyMapping
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
-
# @param [
|
63
|
+
# @param [Symbol] method
|
64
64
|
# @param [Object] path
|
65
65
|
# @param [nil] json
|
66
66
|
def self.dry_run_script(method, path, json = nil)
|
@@ -82,6 +82,7 @@ module NotionRubyMapping
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
+
# @param [Boolean] dry_run true if dry_run
|
85
86
|
def comments(query = nil, dry_run: false)
|
86
87
|
return unless page? || block?
|
87
88
|
|
@@ -89,7 +90,7 @@ module NotionRubyMapping
|
|
89
90
|
self.class.dry_run_script :get, @nc.retrieve_comments_path(@id)
|
90
91
|
else
|
91
92
|
ans = {}
|
92
|
-
List.new(comment_parent: self,
|
93
|
+
List.new(type: :comment_parent, value: self,
|
93
94
|
json: @nc.retrieve_comments_request(@id, query),
|
94
95
|
query: query).each do |comment|
|
95
96
|
dt_id = comment.discussion_id
|
@@ -117,7 +118,7 @@ module NotionRubyMapping
|
|
117
118
|
end
|
118
119
|
|
119
120
|
# @param [Array<Block>] blocks
|
120
|
-
# @param [Boolean] dry_run
|
121
|
+
# @param [Boolean] dry_run true if dry_run
|
121
122
|
# @return [NotionRubyMapping::Block, String]
|
122
123
|
# @see https://www.notion.so/hkob/Page-d359650e3ca94424af8359a24147b9a0#44bbf83d852c419485c5efe9fe1558fb
|
123
124
|
# @see https://www.notion.so/hkob/Block-689ad4cbff50404d8a1baf67b6d6d78d#2c47f7fedae543cf8566389ba1677132
|
@@ -180,7 +181,7 @@ module NotionRubyMapping
|
|
180
181
|
end
|
181
182
|
|
182
183
|
# @param [NotionRubyMapping::Query] query
|
183
|
-
# @param [Boolean] dry_run
|
184
|
+
# @param [Boolean] dry_run true if dry_run
|
184
185
|
# @return [NotionRubyMapping::List, String]
|
185
186
|
def children(query = Query.new, dry_run: false)
|
186
187
|
if dry_run
|
@@ -190,7 +191,7 @@ module NotionRubyMapping
|
|
190
191
|
@children
|
191
192
|
else
|
192
193
|
response = @nc.block_children_request @id, query.query_string
|
193
|
-
@children = List.new json: response, parent: self, query: query
|
194
|
+
@children = List.new json: response, type: :parent, value: self, query: query
|
194
195
|
end
|
195
196
|
end
|
196
197
|
|
@@ -236,6 +237,7 @@ module NotionRubyMapping
|
|
236
237
|
is_a? Page
|
237
238
|
end
|
238
239
|
|
240
|
+
# @param [Boolean] dry_run true if dry_run
|
239
241
|
def parent(dry_run: false)
|
240
242
|
parent_json = @json && @json["parent"]
|
241
243
|
raise StandardError, "Unknown parent" if parent_json.nil?
|
@@ -298,7 +300,7 @@ module NotionRubyMapping
|
|
298
300
|
self
|
299
301
|
end
|
300
302
|
|
301
|
-
# @param [Boolean] dry_run
|
303
|
+
# @param [Boolean] dry_run true if dry_run
|
302
304
|
# @return [NotionRubyMapping::Base, NotionRubyMapping::Database, String]
|
303
305
|
# @see https://www.notion.so/hkob/Page-d359650e3ca94424af8359a24147b9a0#277085c8439841c798a4b94eae9a7326
|
304
306
|
def save(dry_run: false)
|
@@ -64,6 +64,7 @@ module NotionRubyMapping
|
|
64
64
|
|
65
65
|
# @see https://www.notion.so/hkob/Block-689ad4cbff50404d8a1baf67b6d6d78d#298916c7c379424682f39ff09ee38544
|
66
66
|
# @param [String] id
|
67
|
+
# @param [Boolean] dry_run true if dry_run
|
67
68
|
# @return [NotionRubyMapping::Block]
|
68
69
|
def self.find(id, dry_run: false)
|
69
70
|
nc = NotionCache.instance
|
@@ -104,7 +105,7 @@ module NotionRubyMapping
|
|
104
105
|
@rich_text_array = RichTextArray.new "rich_text", json: @json[type]["rich_text"]
|
105
106
|
end
|
106
107
|
|
107
|
-
# @param [Boolean] dry_run
|
108
|
+
# @param [Boolean] dry_run true if dry_run
|
108
109
|
# @return [NotionRubyMapping::Base, String]
|
109
110
|
def destroy(dry_run: false)
|
110
111
|
if dry_run
|
@@ -114,6 +115,7 @@ module NotionRubyMapping
|
|
114
115
|
end
|
115
116
|
end
|
116
117
|
|
118
|
+
# @param [Boolean] dry_run true if dry_run
|
117
119
|
# @return [NotionRubyMapping::Base, String]
|
118
120
|
def update(dry_run: false)
|
119
121
|
if dry_run
|
@@ -6,6 +6,7 @@ module NotionRubyMapping
|
|
6
6
|
### Public announced methods
|
7
7
|
|
8
8
|
# @param [String] id
|
9
|
+
# @param [Boolean] dry_run true if dry_run
|
9
10
|
# @return [NotionRubyMapping::Database, String]
|
10
11
|
# @see https://www.notion.so/hkob/Database-1462b24502424539a4231bedc07dc2f5#58ba9190fd544432a9e2a5823d6c33b7
|
11
12
|
def self.find(id, dry_run: false)
|
@@ -49,6 +50,7 @@ module NotionRubyMapping
|
|
49
50
|
end
|
50
51
|
|
51
52
|
# @param [Array<Property, Class, String>] assign
|
53
|
+
# @param [Boolean] dry_run true if dry_run
|
52
54
|
# @return [NotionRubyMapping::Base]
|
53
55
|
# @see https://www.notion.so/hkob/Database-1462b24502424539a4231bedc07dc2f5#c217ce78020a4de79b720790fce3092d
|
54
56
|
def create_child_page(*assign, dry_run: false)
|
@@ -97,6 +99,7 @@ module NotionRubyMapping
|
|
97
99
|
end
|
98
100
|
|
99
101
|
# @param [NotionRubyMapping::Query] query object
|
102
|
+
# @param [Boolean] dry_run true if dry_run
|
100
103
|
# @return [NotionRubyMapping::List, String]
|
101
104
|
# @see https://www.notion.so/hkob/Database-1462b24502424539a4231bedc07dc2f5#6bd9acf62c454f64bc555c8828057e6b
|
102
105
|
def query_database(query = Query.new, dry_run: false)
|
@@ -104,7 +107,7 @@ module NotionRubyMapping
|
|
104
107
|
Base.dry_run_script :post, @nc.query_database_path(@id), query.query_json
|
105
108
|
else
|
106
109
|
response = @nc.database_query_request @id, query
|
107
|
-
List.new json: response, database: self, query: query
|
110
|
+
List.new json: response, type: :database, value: self, query: query
|
108
111
|
end
|
109
112
|
end
|
110
113
|
|
@@ -130,6 +133,7 @@ module NotionRubyMapping
|
|
130
133
|
|
131
134
|
protected
|
132
135
|
|
136
|
+
# @param [Boolean] dry_run true if dry_run
|
133
137
|
def create(dry_run: false)
|
134
138
|
if dry_run
|
135
139
|
dry_run_script :post, @nc.databases_path, :property_schema_json
|
@@ -145,6 +149,7 @@ module NotionRubyMapping
|
|
145
149
|
@nc.database_request @id
|
146
150
|
end
|
147
151
|
|
152
|
+
# @param [Boolean] dry_run true if dry_run
|
148
153
|
# @return [NotionRubyMapping::Base, String]
|
149
154
|
def update(dry_run: false)
|
150
155
|
if dry_run
|
@@ -5,14 +5,23 @@ module NotionRubyMapping
|
|
5
5
|
class List < Base
|
6
6
|
include Enumerable
|
7
7
|
|
8
|
-
def initialize(json: nil, id: nil,
|
8
|
+
def initialize(json: nil, id: nil, type: nil, value: nil, query: nil)
|
9
9
|
super(json: json, id: id)
|
10
10
|
@has_more = @json["has_more"]
|
11
11
|
@load_all_contents = !@has_more
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
|
13
|
+
case type
|
14
|
+
when :comment_parent
|
15
|
+
@comment_parent = value
|
16
|
+
when :database
|
17
|
+
@database = value
|
18
|
+
when :parent
|
19
|
+
@parent = value
|
20
|
+
when :property
|
21
|
+
@property = value
|
22
|
+
when :user_object
|
23
|
+
@user_object = true
|
24
|
+
end
|
16
25
|
@query = query
|
17
26
|
@index = 0
|
18
27
|
@has_content = true
|
@@ -60,6 +69,11 @@ module NotionRubyMapping
|
|
60
69
|
query: -> { @nc.retrieve_comments_request @comment_parent.id, @query },
|
61
70
|
create_object: ->(json) { CommentObject.new json: json },
|
62
71
|
&block
|
72
|
+
elsif @user_object
|
73
|
+
each_sub base: @user_object,
|
74
|
+
query: -> { @nc.users_request @query.query_json },
|
75
|
+
create_object: ->(json) { UserObject.new json: json },
|
76
|
+
&block
|
63
77
|
end
|
64
78
|
self
|
65
79
|
end
|
@@ -6,6 +6,7 @@ module NotionRubyMapping
|
|
6
6
|
### Public announced methods
|
7
7
|
|
8
8
|
# @param [String] id
|
9
|
+
# @param [Boolean] dry_run true if dry_run
|
9
10
|
# @return [NotionRubyMapping::Page, String]
|
10
11
|
# @see https://www.notion.so/hkob/Page-d359650e3ca94424af8359a24147b9a0#7d868b8b81c3473082bbdc7370813a4a
|
11
12
|
def self.find(id, dry_run: false)
|
@@ -24,6 +25,7 @@ module NotionRubyMapping
|
|
24
25
|
get key
|
25
26
|
end
|
26
27
|
|
28
|
+
# @param [Boolean] dry_run true if dry_run
|
27
29
|
def append_comment(text_objects, dry_run: false)
|
28
30
|
rto = RichTextArray.new "rich_text", text_objects: text_objects, will_update: true
|
29
31
|
json = rto.property_schema_json.merge({"parent" => {"page_id" => @id}})
|
@@ -47,6 +49,7 @@ module NotionRubyMapping
|
|
47
49
|
|
48
50
|
# @param [String] title
|
49
51
|
# @param [Array<String, Property>] assigns
|
52
|
+
# @param [Boolean] dry_run true if dry_run
|
50
53
|
# @return [NotionRubyMapping::Database, String]
|
51
54
|
# @see https://www.notion.so/hkob/Page-d359650e3ca94424af8359a24147b9a0#e3f1d21e0f724f589e48431468772eed
|
52
55
|
def create_child_database(title, *assigns, dry_run: false)
|
@@ -62,6 +65,7 @@ module NotionRubyMapping
|
|
62
65
|
|
63
66
|
protected
|
64
67
|
|
68
|
+
# @param [Boolean] dry_run true if dry_run
|
65
69
|
# @return [NotionRubyMapping::Base, String]
|
66
70
|
def create(dry_run: false)
|
67
71
|
if dry_run
|
@@ -77,6 +81,7 @@ module NotionRubyMapping
|
|
77
81
|
@nc.page_request @id
|
78
82
|
end
|
79
83
|
|
84
|
+
# @param [Boolean] dry_run true if dry_run
|
80
85
|
# @return [NotionRubyMapping::Base, String]
|
81
86
|
def update(dry_run: false)
|
82
87
|
if dry_run
|
@@ -11,7 +11,7 @@ module NotionRubyMapping
|
|
11
11
|
attr_reader :discussion_id, :comments
|
12
12
|
|
13
13
|
# @param [String] text_objects
|
14
|
-
# @param [Boolean] dry_run
|
14
|
+
# @param [Boolean] dry_run true if dry_run
|
15
15
|
# @return [String, NotionRubyMapping::CommentObject]
|
16
16
|
def append_comment(text_objects, dry_run: false)
|
17
17
|
rto = RichTextArray.new "rich_text", text_objects: text_objects, will_update: true
|
@@ -20,11 +20,12 @@ module NotionRubyMapping
|
|
20
20
|
builder.adapter Faraday.default_adapter
|
21
21
|
end
|
22
22
|
@notion_token = nil
|
23
|
-
@wait = 0
|
23
|
+
@wait = 0.3333
|
24
24
|
@debug = false
|
25
25
|
end
|
26
26
|
attr_reader :object_hash
|
27
27
|
attr_writer :client # for test only
|
28
|
+
attr_accessor :notion_token, :wait, :debug
|
28
29
|
|
29
30
|
# @param [String] block_id
|
30
31
|
# @return [String (frozen)] block_path
|
@@ -239,7 +240,7 @@ module NotionRubyMapping
|
|
239
240
|
# @param [Hash] options
|
240
241
|
# @return [Hash] response hash
|
241
242
|
def request(method, path, options = {})
|
242
|
-
raise "Please call `
|
243
|
+
raise "Please call `NotionRubyMapping.configure' before using other methods" unless @notion_token
|
243
244
|
|
244
245
|
sleep @wait
|
245
246
|
response = @client.send(method) do |request|
|
@@ -284,5 +285,40 @@ module NotionRubyMapping
|
|
284
285
|
def update_page_request(page_id, payload)
|
285
286
|
request :patch, page_path(page_id), payload
|
286
287
|
end
|
288
|
+
|
289
|
+
# @param [String] id user_id (with or without "-")
|
290
|
+
# @return [NotionRubyMapping::UserObject] UserObject object or nil
|
291
|
+
def user(id)
|
292
|
+
UserObject.new json: user_request(id)
|
293
|
+
end
|
294
|
+
|
295
|
+
# @param [String] user_id
|
296
|
+
# @return [String (frozen)] user_path
|
297
|
+
def user_path(user_id)
|
298
|
+
"v1/users/#{user_id}"
|
299
|
+
end
|
300
|
+
|
301
|
+
# @param [String] user_id
|
302
|
+
# @return [Hash] response
|
303
|
+
def user_request(user_id)
|
304
|
+
request :get, user_path(user_id)
|
305
|
+
end
|
306
|
+
|
307
|
+
# @return [Array<NotionRubyMapping::UserObject>] UserObject array
|
308
|
+
def users
|
309
|
+
List.new json: users_request, type: :user_object, value: true
|
310
|
+
end
|
311
|
+
|
312
|
+
# @return [String (frozen)] user_path
|
313
|
+
def users_path(option = "")
|
314
|
+
"v1/users#{option}"
|
315
|
+
end
|
316
|
+
|
317
|
+
# @param [String] user_id
|
318
|
+
# @param [NotionRubyMapping::Query] query query object
|
319
|
+
# @return [Hash] response
|
320
|
+
def users_request(query = Query.new)
|
321
|
+
request :get, users_path, query.query_json
|
322
|
+
end
|
287
323
|
end
|
288
324
|
end
|
@@ -6,11 +6,38 @@ module NotionRubyMapping
|
|
6
6
|
# @param [String] user_id
|
7
7
|
# @return [TextObject]
|
8
8
|
def initialize(user_id: nil, json: {})
|
9
|
-
@user_id = user_id || json && json["id"]
|
9
|
+
@user_id = NotionCache.instance.hex_id(user_id || json && json["id"])
|
10
10
|
@json = json
|
11
11
|
@will_update = false
|
12
12
|
end
|
13
|
-
attr_reader :will_update, :user_id
|
13
|
+
attr_reader :will_update, :user_id, :json
|
14
|
+
|
15
|
+
# @param [Boolean] dry_run true if dry_run
|
16
|
+
def self.all(dry_run: false)
|
17
|
+
nc = NotionCache.instance
|
18
|
+
if dry_run
|
19
|
+
Base.dry_run_script :get, nc.users_path
|
20
|
+
else
|
21
|
+
nc.users
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# @param [String] user_id
|
26
|
+
# @param [Boolean] dry_run true if dry_run
|
27
|
+
# @return [NotionRubyMapping::UserObject, String]
|
28
|
+
def self.find(user_id, dry_run: false)
|
29
|
+
nc = NotionCache.instance
|
30
|
+
if dry_run
|
31
|
+
Base.dry_run_script :get, nc.user_path(user_id)
|
32
|
+
else
|
33
|
+
nc.user user_id
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
# @param [Boolean] dry_run true if dry_run
|
38
|
+
def self.find_me(dry_run: false)
|
39
|
+
find "me", dry_run: dry_run
|
40
|
+
end
|
14
41
|
|
15
42
|
# @param [UserObject, String] uo
|
16
43
|
# @return [UserObject] self or created UserObject
|
@@ -22,6 +49,11 @@ module NotionRubyMapping
|
|
22
49
|
end
|
23
50
|
end
|
24
51
|
|
52
|
+
# @return [String (frozen)]
|
53
|
+
def inspect
|
54
|
+
"#{self.class.name}-#{@user_id}"
|
55
|
+
end
|
56
|
+
|
25
57
|
# @return [String]
|
26
58
|
def name
|
27
59
|
@json["name"]
|
@@ -36,7 +68,7 @@ module NotionRubyMapping
|
|
36
68
|
end
|
37
69
|
|
38
70
|
def user_id=(new_user_id)
|
39
|
-
@user_id = new_user_id
|
71
|
+
@user_id = NotionCache.instance.hex_id new_user_id
|
40
72
|
@will_update = true
|
41
73
|
end
|
42
74
|
end
|
@@ -34,7 +34,7 @@ module NotionRubyMapping
|
|
34
34
|
def self.start_end_time(date)
|
35
35
|
ds = date.iso8601
|
36
36
|
tz = Time.now.strftime "%:z"
|
37
|
-
%w[00:00:00 23:59:59].map {|t| [ds, "T", t, tz].join("") }
|
37
|
+
%w[00:00:00 23:59:59].map { |t| [ds, "T", t, tz].join("") }
|
38
38
|
end
|
39
39
|
|
40
40
|
# @param [Date, Time, DateTime, String, nil] obj
|
@@ -44,119 +44,129 @@ module NotionRubyMapping
|
|
44
44
|
Date.parse str if str
|
45
45
|
end
|
46
46
|
|
47
|
-
# @param [String]
|
48
|
-
# @param [String]
|
47
|
+
# @param [String] condition Rollup name
|
48
|
+
# @param [String] another_type Rollup type
|
49
49
|
# @return [NotionRubyMapping::Query] generated Query object
|
50
50
|
# @see https://www.notion.so/hkob/CheckboxProperty-ac1edbdb8e264af5ad1432b522b429fd#5f07c4ebc4744986bfc99a43827349fc
|
51
|
-
def filter_equals(date,
|
51
|
+
def filter_equals(date, condition: nil, another_type: nil)
|
52
52
|
if date.is_a? Date
|
53
53
|
start_date, end_date = self.class.start_end_time date
|
54
|
-
if
|
55
|
-
filter_after(start_date,
|
56
|
-
.and(filter_before(end_date,
|
54
|
+
if condition
|
55
|
+
filter_after(start_date, condition: condition, another_type: another_type)
|
56
|
+
.and(filter_before(end_date, condition: condition, another_type: another_type))
|
57
57
|
else
|
58
|
-
filter_after(start_date
|
58
|
+
filter_after(start_date, another_type: another_type)
|
59
|
+
.and(filter_before(end_date, another_type: another_type))
|
59
60
|
end
|
60
61
|
else
|
61
|
-
make_filter_query "equals", value_str(date),
|
62
|
+
make_filter_query "equals", value_str(date), condition: condition, another_type: another_type
|
62
63
|
end
|
63
64
|
end
|
64
65
|
|
65
|
-
# @param [String]
|
66
|
-
# @param [String]
|
66
|
+
# @param [String] condition Rollup name
|
67
|
+
# @param [String] another_type Rollup type
|
67
68
|
# @return [NotionRubyMapping::Query] generated Query object
|
68
|
-
def filter_does_not_equal(date,
|
69
|
+
def filter_does_not_equal(date, condition: nil, another_type: nil)
|
69
70
|
if date.is_a? Date
|
70
71
|
start_date, end_date = self.class.start_end_time date
|
71
|
-
if
|
72
|
-
filter_before(start_date,
|
73
|
-
.or(filter_after(end_date,
|
72
|
+
if condition
|
73
|
+
filter_before(start_date, condition: condition, another_type: another_type)
|
74
|
+
.or(filter_after(end_date, condition: condition, another_type: another_type))
|
74
75
|
else
|
75
|
-
filter_before(start_date)
|
76
|
+
filter_before(start_date, another_type: another_type)
|
77
|
+
.or(filter_after(end_date, another_type: another_type))
|
76
78
|
end
|
77
79
|
else
|
78
|
-
make_filter_query "does_not_equal", value_str(date),
|
80
|
+
make_filter_query "does_not_equal", value_str(date), condition: condition, another_type: another_type
|
79
81
|
end
|
80
82
|
end
|
81
83
|
|
82
|
-
# @param [String]
|
83
|
-
# @param [String]
|
84
|
+
# @param [String] condition Rollup name
|
85
|
+
# @param [String] another_type Rollup type
|
84
86
|
# @return [NotionRubyMapping::Query] generated Query object
|
85
87
|
# @see https://www.notion.so/hkob/CreatedTimeProperty-bb979ff02dc04efa9733da1003efa871#841815bfaf684964bebf3fa6712ae26c
|
86
|
-
def filter_before(date,
|
87
|
-
make_filter_query "before", value_str(date, start_time: true),
|
88
|
+
def filter_before(date, condition: nil, another_type: nil)
|
89
|
+
make_filter_query "before", value_str(date, start_time: true), condition: condition, another_type: another_type
|
88
90
|
end
|
89
91
|
|
90
|
-
# @param [String]
|
91
|
-
# @param [String]
|
92
|
+
# @param [String] condition Rollup name
|
93
|
+
# @param [String] another_type Rollup type
|
92
94
|
# @return [NotionRubyMapping::Query] generated Query object
|
93
95
|
# @see https://www.notion.so/hkob/CreatedTimeProperty-bb979ff02dc04efa9733da1003efa871#c0ea140866ea46f9a746b24773dc821c
|
94
|
-
def filter_after(date,
|
95
|
-
make_filter_query "after", value_str(date, end_time: true),
|
96
|
+
def filter_after(date, condition: nil, another_type: nil)
|
97
|
+
make_filter_query "after", value_str(date, end_time: true), condition: condition, another_type: another_type
|
96
98
|
end
|
97
99
|
|
98
|
-
# @param [String]
|
99
|
-
# @param [String]
|
100
|
+
# @param [String] condition Rollup name
|
101
|
+
# @param [String] another_type Rollup type
|
100
102
|
# @return [NotionRubyMapping::Query] generated Query object
|
101
103
|
# @see https://www.notion.so/hkob/CreatedTimeProperty-bb979ff02dc04efa9733da1003efa871#6a20ade0ee964aad81aae4c08ea29d6b
|
102
|
-
def filter_on_or_before(date,
|
103
|
-
make_filter_query "on_or_before", value_str(date, end_time: true),
|
104
|
+
def filter_on_or_before(date, condition: nil, another_type: nil)
|
105
|
+
make_filter_query "on_or_before", value_str(date, end_time: true), condition: condition, another_type: another_type
|
104
106
|
end
|
105
107
|
|
106
|
-
# @param [String]
|
107
|
-
# @param [String]
|
108
|
+
# @param [String] condition Rollup name
|
109
|
+
# @param [String] another_type Rollup type
|
108
110
|
# @return [NotionRubyMapping::Query] generated Query object
|
109
111
|
# @see https://www.notion.so/hkob/CreatedTimeProperty-bb979ff02dc04efa9733da1003efa871#1469e3fb3068426a8ea8492d191d1563
|
110
|
-
def filter_on_or_after(date,
|
111
|
-
make_filter_query "on_or_after", value_str(date, start_time: true),
|
112
|
+
def filter_on_or_after(date, condition: nil, another_type: nil)
|
113
|
+
make_filter_query "on_or_after", value_str(date, start_time: true), condition: condition, another_type: another_type
|
112
114
|
end
|
113
115
|
|
114
|
-
# @param [String]
|
115
|
-
# @param [String]
|
116
|
+
# @param [String] condition Rollup name
|
117
|
+
# @param [String] another_type Rollup type
|
116
118
|
# @return [NotionRubyMapping::Query] generated Query object
|
117
119
|
# @see https://www.notion.so/hkob/CreatedTimeProperty-bb979ff02dc04efa9733da1003efa871#707e7e848dc9417998420b65024542db
|
118
|
-
def filter_past_week(
|
119
|
-
make_filter_query "past_week", {},
|
120
|
+
def filter_past_week(condition: nil, another_type: nil)
|
121
|
+
make_filter_query "past_week", {}, condition: condition, another_type: another_type
|
120
122
|
end
|
121
123
|
|
122
|
-
# @param [String]
|
123
|
-
# @param [String]
|
124
|
+
# @param [String] condition Rollup name
|
125
|
+
# @param [String] another_type Rollup type
|
124
126
|
# @return [NotionRubyMapping::Query] generated Query object
|
125
127
|
# @see https://www.notion.so/hkob/CreatedTimeProperty-bb979ff02dc04efa9733da1003efa871#7b2d05c549204c2eb68d95020d7b97c5
|
126
|
-
def filter_past_month(
|
127
|
-
make_filter_query "past_month", {},
|
128
|
+
def filter_past_month(condition: nil, another_type: nil)
|
129
|
+
make_filter_query "past_month", {}, condition: condition, another_type: another_type
|
128
130
|
end
|
129
131
|
|
130
|
-
# @param [String]
|
131
|
-
# @param [String]
|
132
|
+
# @param [String] condition Rollup name
|
133
|
+
# @param [String] another_type Rollup type
|
132
134
|
# @return [NotionRubyMapping::Query] generated Query object
|
133
135
|
# @see https://www.notion.so/hkob/CreatedTimeProperty-bb979ff02dc04efa9733da1003efa871#9c8bf0a2398a41c8a0714a62afca3aa8
|
134
|
-
def filter_past_year(
|
135
|
-
make_filter_query "past_year", {},
|
136
|
+
def filter_past_year(condition: nil, another_type: nil)
|
137
|
+
make_filter_query "past_year", {}, condition: condition, another_type: another_type
|
136
138
|
end
|
137
139
|
|
138
|
-
# @param [String]
|
139
|
-
# @param [String]
|
140
|
+
# @param [String] condition Rollup name
|
141
|
+
# @param [String] another_type Rollup type
|
142
|
+
# @return [NotionRubyMapping::Query] generated Query object
|
143
|
+
# @see
|
144
|
+
def filter_this_week(condition: nil, another_type: nil)
|
145
|
+
make_filter_query "this_week", {}, condition: condition, another_type: another_type
|
146
|
+
end
|
147
|
+
|
148
|
+
# @param [String] condition Rollup name
|
149
|
+
# @param [String] another_type Rollup type
|
140
150
|
# @return [NotionRubyMapping::Query] generated Query object
|
141
151
|
# @see https://www.notion.so/hkob/CreatedTimeProperty-bb979ff02dc04efa9733da1003efa871#d9dc189ee8244ba8a6c863259eaa9984
|
142
|
-
def filter_next_week(
|
143
|
-
make_filter_query "next_week", {},
|
152
|
+
def filter_next_week(condition: nil, another_type: nil)
|
153
|
+
make_filter_query "next_week", {}, condition: condition, another_type: another_type
|
144
154
|
end
|
145
155
|
|
146
|
-
# @param [String]
|
147
|
-
# @param [String]
|
156
|
+
# @param [String] condition Rollup name
|
157
|
+
# @param [String] another_type Rollup type
|
148
158
|
# @return [NotionRubyMapping::Query] generated Query object
|
149
159
|
# @see https://www.notion.so/hkob/CreatedTimeProperty-bb979ff02dc04efa9733da1003efa871#0edb4dffbe6b403882255e870cc71066
|
150
|
-
def filter_next_month(
|
151
|
-
make_filter_query "next_month", {},
|
160
|
+
def filter_next_month(condition: nil, another_type: nil)
|
161
|
+
make_filter_query "next_month", {}, condition: condition, another_type: another_type
|
152
162
|
end
|
153
163
|
|
154
|
-
# @param [String]
|
155
|
-
# @param [String]
|
164
|
+
# @param [String] condition Rollup name
|
165
|
+
# @param [String] another_type Rollup type
|
156
166
|
# @return [NotionRubyMapping::Query] generated Query object
|
157
167
|
# @see https://www.notion.so/hkob/CreatedTimeProperty-bb979ff02dc04efa9733da1003efa871#b59c73dd4b1a488f95d3e8cd19853709
|
158
|
-
def filter_next_year(
|
159
|
-
make_filter_query "next_year", {},
|
168
|
+
def filter_next_year(condition: nil, another_type: nil)
|
169
|
+
make_filter_query "next_year", {}, condition: condition, another_type: another_type
|
160
170
|
end
|
161
171
|
|
162
172
|
# @param [Date, Time, DateTime, String, nil] obj
|
@@ -29,8 +29,8 @@ module NotionRubyMapping
|
|
29
29
|
def end_date=(edt)
|
30
30
|
assert_page_property __method__
|
31
31
|
@will_update = true
|
32
|
-
sdt = start_date
|
33
|
-
edt = nil if sdt.class != edt.class || sdt > edt
|
32
|
+
# sdt = start_date
|
33
|
+
# edt = nil if sdt.class != edt.class || sdt > edt
|
34
34
|
@json["end"] = edt
|
35
35
|
end
|
36
36
|
|
@@ -46,8 +46,8 @@ module NotionRubyMapping
|
|
46
46
|
def start_date=(sdt)
|
47
47
|
assert_page_property __method__
|
48
48
|
@will_update = true
|
49
|
-
edt = end_date
|
50
|
-
@json["end"] = nil if sdt.class != edt.class || sdt > edt
|
49
|
+
# edt = end_date
|
50
|
+
# @json["end"] = nil if sdt.class != edt.class || sdt > edt
|
51
51
|
@json["start"] = sdt
|
52
52
|
end
|
53
53
|
|
@@ -41,7 +41,7 @@ module NotionRubyMapping
|
|
41
41
|
|
42
42
|
# @param [String] name
|
43
43
|
# @param [Hash] json
|
44
|
-
def initialize(name, will_update: false, base_type: :page, json: nil, formula: nil, property_id: nil,
|
44
|
+
def initialize(name, will_update: false, base_type: :page, json: nil, formula: nil, property_id: nil,
|
45
45
|
property_cache: nil)
|
46
46
|
super name, will_update: will_update, base_type: base_type, property_id: property_id,
|
47
47
|
property_cache: property_cache
|
@@ -43,7 +43,7 @@ module NotionRubyMapping
|
|
43
43
|
if json.is_a? Array
|
44
44
|
json.map { |sub_json| UserObject.new json: sub_json }
|
45
45
|
elsif json["object"] == "list"
|
46
|
-
List.new(json: json, property: self).select { true }
|
46
|
+
List.new(json: json, type: :property, value: self).select { true }
|
47
47
|
else
|
48
48
|
json["people"].map { |sub_json| UserObject.new json: sub_json }
|
49
49
|
end
|
@@ -76,7 +76,7 @@ module NotionRubyMapping
|
|
76
76
|
elsif type == "property_item"
|
77
77
|
tmp = new name, property_id: input_json["property_item"]["id"], base_type: base_type,
|
78
78
|
property_cache: property_cache, query: query
|
79
|
-
objects = List.new(json: input_json, property: tmp, query: query).
|
79
|
+
objects = List.new(json: input_json, type: :property, value: tmp, query: query).to_a
|
80
80
|
case input_json["property_item"]["type"]
|
81
81
|
when "people"
|
82
82
|
PeopleProperty.new name, people: objects, base_type: base_type,
|
@@ -142,11 +142,13 @@ module NotionRubyMapping
|
|
142
142
|
# @param [String] key query parameter
|
143
143
|
# @param [Object] value query value
|
144
144
|
# @return [NotionRubyMapping::Query] generated Query object
|
145
|
-
def make_filter_query(key, value,
|
146
|
-
if
|
147
|
-
Query.new filter: {"property" => @name,
|
148
|
-
elsif
|
149
|
-
Query.new filter: {"property" => @name,
|
145
|
+
def make_filter_query(key, value, condition: nil, another_type: nil)
|
146
|
+
if is_a? FormulaProperty
|
147
|
+
Query.new filter: {"property" => @name, "formula" => {another_type => {key => value}}}
|
148
|
+
elsif condition
|
149
|
+
Query.new filter: {"property" => @name, condition => {another_type => {key => value}}}
|
150
|
+
elsif another_type
|
151
|
+
Query.new filter: {"property" => @name, another_type => {key => value}}
|
150
152
|
elsif @name == "__timestamp__"
|
151
153
|
Query.new filter: {"timestamp" => type, type => {key => value}}
|
152
154
|
else
|
@@ -235,8 +237,8 @@ module NotionRubyMapping
|
|
235
237
|
# @param [String] rollup_type Rollup type
|
236
238
|
# @return [NotionRubyMapping::Query] generated Query object
|
237
239
|
# @see https://www.notion.so/hkob/CheckboxProperty-ac1edbdb8e264af5ad1432b522b429fd#5f07c4ebc4744986bfc99a43827349fc
|
238
|
-
def filter_equals(value,
|
239
|
-
make_filter_query "equals", value,
|
240
|
+
def filter_equals(value, condition: nil, another_type: nil)
|
241
|
+
make_filter_query "equals", value, condition: condition, another_type: another_type
|
240
242
|
end
|
241
243
|
|
242
244
|
# @param [String, Number] value Query value
|
@@ -244,8 +246,8 @@ module NotionRubyMapping
|
|
244
246
|
# @param [String] rollup_type Rollup type
|
245
247
|
# @return [NotionRubyMapping::Query] generated Query object
|
246
248
|
# @see https://www.notion.so/hkob/CheckboxProperty-ac1edbdb8e264af5ad1432b522b429fd#a44a1875c3ef49f2b4f817291953a1d4
|
247
|
-
def filter_does_not_equal(value,
|
248
|
-
make_filter_query "does_not_equal", value,
|
249
|
+
def filter_does_not_equal(value, condition: nil, another_type: nil)
|
250
|
+
make_filter_query "does_not_equal", value, condition: condition, another_type: another_type
|
249
251
|
end
|
250
252
|
end
|
251
253
|
|
@@ -258,8 +260,8 @@ module NotionRubyMapping
|
|
258
260
|
# @param [String] rollup_type Rollup type
|
259
261
|
# @return [NotionRubyMapping::Query] generated Query object
|
260
262
|
# @see https://www.notion.so/hkob/CreatedByProperty-945fa6be1c014da2b7e55a2b76e37b57#271a2ebaa1ec48acae732ca98920feab
|
261
|
-
def filter_contains(value,
|
262
|
-
make_filter_query "contains", value,
|
263
|
+
def filter_contains(value, condition: nil, another_type: nil)
|
264
|
+
make_filter_query "contains", value, condition: condition, another_type: another_type
|
263
265
|
end
|
264
266
|
|
265
267
|
# @param [String] value Query value
|
@@ -267,8 +269,8 @@ module NotionRubyMapping
|
|
267
269
|
# @param [String] rollup_type Rollup type
|
268
270
|
# @return [NotionRubyMapping::Query] generated Query object
|
269
271
|
# @see https://www.notion.so/hkob/CreatedByProperty-945fa6be1c014da2b7e55a2b76e37b57#b0328e3b146f48a4ad4c9c2ee5363486
|
270
|
-
def filter_does_not_contain(value,
|
271
|
-
make_filter_query "does_not_contain", value,
|
272
|
+
def filter_does_not_contain(value, condition: nil, another_type: nil)
|
273
|
+
make_filter_query "does_not_contain", value, condition: condition, another_type: another_type
|
272
274
|
end
|
273
275
|
end
|
274
276
|
|
@@ -281,16 +283,16 @@ module NotionRubyMapping
|
|
281
283
|
# @param [String] rollup_type Rollup type
|
282
284
|
# @return [NotionRubyMapping::Query] generated Query object
|
283
285
|
# @see https://www.notion.so/hkob/EmailProperty-39aeb5df56ea4cc1b9380574e4fdeec0#d3e098b2f38c4c8c9d3e815516cfd953
|
284
|
-
def filter_starts_with(value,
|
285
|
-
make_filter_query "starts_with", value,
|
286
|
+
def filter_starts_with(value, condition: nil, another_type: nil)
|
287
|
+
make_filter_query "starts_with", value, condition: condition, another_type: another_type
|
286
288
|
end
|
287
289
|
|
288
290
|
# @param [String] value Query value
|
289
291
|
# @param [String] rollup Rollup name
|
290
292
|
# @param [String] rollup_type Rollup type
|
291
293
|
# @return [NotionRubyMapping::Query] generated Query object
|
292
|
-
def filter_ends_with(value,
|
293
|
-
make_filter_query "ends_with", value,
|
294
|
+
def filter_ends_with(value, condition: nil, another_type: nil)
|
295
|
+
make_filter_query "ends_with", value, condition: condition, another_type: another_type
|
294
296
|
end
|
295
297
|
end
|
296
298
|
|
@@ -302,16 +304,16 @@ module NotionRubyMapping
|
|
302
304
|
# @param [String] rollup_type Rollup type
|
303
305
|
# @return [NotionRubyMapping::Query] generated Query object
|
304
306
|
# @see https://www.notion.so/hkob/CreatedByProperty-945fa6be1c014da2b7e55a2b76e37b57#38749dfae0854c68b4c55095d3efbff1
|
305
|
-
def filter_is_empty(
|
306
|
-
make_filter_query "is_empty", true,
|
307
|
+
def filter_is_empty(condition: nil, another_type: nil)
|
308
|
+
make_filter_query "is_empty", true, condition: condition, another_type: another_type
|
307
309
|
end
|
308
310
|
|
309
311
|
# @param [String] rollup Rollup name
|
310
312
|
# @param [String] rollup_type Rollup type
|
311
313
|
# @return [NotionRubyMapping::Query] generated Query object
|
312
314
|
# @see https://www.notion.so/hkob/CreatedByProperty-945fa6be1c014da2b7e55a2b76e37b57#515659ea52b54fb48c81b813f3b705f6
|
313
|
-
def filter_is_not_empty(
|
314
|
-
make_filter_query "is_not_empty", true,
|
315
|
+
def filter_is_not_empty(condition: nil, another_type: nil)
|
316
|
+
make_filter_query "is_not_empty", true, condition: condition, another_type: another_type
|
315
317
|
end
|
316
318
|
end
|
317
319
|
|
@@ -323,32 +325,32 @@ module NotionRubyMapping
|
|
323
325
|
# @param [String] rollup Rollup name
|
324
326
|
# @param [String] rollup_type Rollup type
|
325
327
|
# @return [NotionRubyMapping::Query] generated Query object
|
326
|
-
def filter_greater_than(value,
|
327
|
-
make_filter_query "greater_than", value,
|
328
|
+
def filter_greater_than(value, condition: nil, another_type: nil)
|
329
|
+
make_filter_query "greater_than", value, condition: condition, another_type: another_type
|
328
330
|
end
|
329
331
|
|
330
332
|
# @param [Number] value Query value
|
331
333
|
# @param [String] rollup Rollup name
|
332
334
|
# @param [String] rollup_type Rollup type
|
333
335
|
# @return [NotionRubyMapping::Query] generated Query object
|
334
|
-
def filter_less_than(value,
|
335
|
-
make_filter_query "less_than", value,
|
336
|
+
def filter_less_than(value, condition: nil, another_type: nil)
|
337
|
+
make_filter_query "less_than", value, condition: condition, another_type: another_type
|
336
338
|
end
|
337
339
|
|
338
340
|
# @param [Number] value Query value
|
339
341
|
# @param [String] rollup Rollup name
|
340
342
|
# @param [String] rollup_type Rollup type
|
341
343
|
# @return [NotionRubyMapping::Query] generated Query object
|
342
|
-
def filter_greater_than_or_equal_to(value,
|
343
|
-
make_filter_query "greater_than_or_equal_to", value,
|
344
|
+
def filter_greater_than_or_equal_to(value, condition: nil, another_type: nil)
|
345
|
+
make_filter_query "greater_than_or_equal_to", value, condition: condition, another_type: another_type
|
344
346
|
end
|
345
347
|
|
346
348
|
# @param [Number] value Query value
|
347
349
|
# @param [String] rollup Rollup name
|
348
350
|
# @param [String] rollup_type Rollup type
|
349
351
|
# @return [NotionRubyMapping::Query] generated Query object
|
350
|
-
def filter_less_than_or_equal_to(value,
|
351
|
-
make_filter_query "less_than_or_equal_to", value,
|
352
|
+
def filter_less_than_or_equal_to(value, condition: nil, another_type: nil)
|
353
|
+
make_filter_query "less_than_or_equal_to", value, condition: condition, another_type: another_type
|
352
354
|
end
|
353
355
|
end
|
354
356
|
end
|
@@ -9,7 +9,7 @@ module NotionRubyMapping
|
|
9
9
|
|
10
10
|
## Common methods
|
11
11
|
|
12
|
-
# @return [Hash, Array]
|
12
|
+
# @return [Hash, Array, nil]
|
13
13
|
# @see https://www.notion.so/hkob/RelationProperty-f608ab41a1f0476b98456620346fba03#6c14207b2d1340d2bbc08d17eee2cb22
|
14
14
|
def relation
|
15
15
|
@json
|
@@ -78,10 +78,8 @@ module NotionRubyMapping
|
|
78
78
|
json || {}
|
79
79
|
elsif relation
|
80
80
|
Array(relation).map { |r| {"id" => r} }
|
81
|
-
elsif json
|
82
|
-
json
|
83
81
|
else
|
84
|
-
[]
|
82
|
+
json || []
|
85
83
|
end
|
86
84
|
end
|
87
85
|
|
@@ -11,7 +11,7 @@ module NotionRubyMapping
|
|
11
11
|
|
12
12
|
def self.rich_text_array_from_json(json)
|
13
13
|
if json["object"] == "list"
|
14
|
-
rich_text_objects = List.new(json: json, property: self).select { true }
|
14
|
+
rich_text_objects = List.new(json: json, type: :property, value: self).select { true }
|
15
15
|
RichTextArray.rich_text_array "title", rich_text_objects
|
16
16
|
else
|
17
17
|
RichTextArray.new "title", json: json["title"]
|
data/lib/notion_ruby_mapping.rb
CHANGED
@@ -25,3 +25,11 @@ require_relative "notion_ruby_mapping/version"
|
|
25
25
|
require_relative "notion_ruby_mapping/#{key}/#{klass}"
|
26
26
|
end
|
27
27
|
end
|
28
|
+
|
29
|
+
module NotionRubyMapping
|
30
|
+
def configure
|
31
|
+
yield NotionRubyMapping::NotionCache.instance
|
32
|
+
end
|
33
|
+
module_function :configure
|
34
|
+
end
|
35
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: notion_ruby_mapping
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hiroyuki KOBAYASHI
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|