or: NotionRubyMapping 解説 (79)

はじめに

NotionRubyMapping 解説の第79回目です。昨日の and に引き続き or を解説します。まず、以前使っていたデータベースを取得します。

parent

irb(main):002> db = Database.find "https://www.notion.so/hkob/cad035c49e5346e78331cb5d05cbc754?v=a03e96ed79ad4d35808e7a08583396a0&pvs=4"
=> NotionRubyMapping::Database-cad035c49e5346e78331cb5d05cbc754

query_database のみ

まず何もフィルタをかけないデータベースの検索で件数が3件になることを確認します。

irb(main):003> db.query_database.count
=> 3

or

複数のフィルタ条件のどちらか満たすものを取り出すときには、filter_* を or で繋ぎます。同じプロパティを複数回使うときには、それを変数に入れておくといいです。

irb(main):004> dps = db.properties
=> PropertyCache
irb(main):005> np = dps["Number"]
=>
#<NotionRubyMapping::NumberProperty:0x0000000106b162d0
...
irb(main):006> db.query_database(np.filter_less_than(1).or(np.filter_greater_tha
n(15))).count
=> 1

わかりにくいなと思ったら、先に query を別に作っておくと楽だと思います。

irb(main):007> query = np.filter_less_than(1).or(np.filter_greater_than(15))
=>
#<NotionRubyMapping::Query:0x000000010703c138
...
irb(main):008> query
=>
#<NotionRubyMapping::Query:0x000000010703c138
 @filter=
  {"or"=>
    [{"property"=>"Number", "number"=>{"less_than"=>1}},
     {"property"=>"Number", "number"=>{"greater_than"=>15}}]},
 @filter_properties=[],
 @page_size=100,
 @sort=[],
 @start_cursor=nil>
irb(main):009> db.query_database(query).count
=> 1

おわりに

今日は、フィルタが同時に満たすときに満足する or を解説しました。

Query のマニュアルはこちらです。その他のマニュアルもここから見てください。

Query

NotionRubyMapping解説