and: NotionRubyMapping 解説 (78)

はじめに

NotionRubyMapping 解説の第78回目です。今日は体調が悪いので、軽く条件の and を解説します。まず、以前使っていたデータベースを取得します。

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

and

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

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

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

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

おわりに

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

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

Query

NotionRubyMapping解説