はじめに
hkob の雑記録の第260回目は、NotionRubyMapping v3.0.0 のリリースについて解説します。今回変更になった部分を解説します。
DataSource クラスの追加
Notion-Version 2025-09-03 から、データベースはコンテナとなり、内部に複数のデータソースを持つようになりました。このため、NotionRubyMapping でも、DataSource クラスを新規に追加しました。また、これまで DataBase に関するメソッドはほとんど DataSource に移動しました。
ds = DataSource.find "data_source_id"
- data_source_id を取得し、DataSource オブジェクトを作成します。
db.create_child_data_source("data base title") do |ds, dp| ... end
- データベース db の中にデータソースを作成します。これまではページの直下にデータベースを作成できましたが、データソースはデータベースコンテナの中に作成します。
ds.create_child_page do |p, pp| ... end
- データソース ds の中にページを作成します。
ds.add_property(klass, title) do |dp| ... end
- データソース ds にプロパティを追加します。
ds.query_data_source(query_object)
- query_object の内容に従って、データソース内のページを検索します。
その他多数のデータベースに存在したメソッドが DataSource に移動しています。
Database クラスのメソッド削除
データベースは単なるコンテナになってしまったので、property の編集、削除などのメソッドを削除しました。ただし、ページの下にデータベースを作成する場合、データソースの存在しないデータベースが作成できないため、これまで通り、page には create_child_database が存在します。
data_sources
- 保有している DataSource オブジェクトの Array を返却します。
page.create_child_database("data base title") do |ds, dp| ... end
- ページ db の中にデータベースを作成するとともに、一つ目のデータソースを同時に作成します。この構文は以前のバージョンのものと全く同じ構文になります。このため、これまでのデータベース作成で使っていたスクリプトはそのまま動作します。
RelationProperty の連携先変更
RelationProperty は database_id ではなく data_source_id で連携するようになります。以下のメソッドに変更になっています。
relation_database_id
→relation_data_source_id
replace_relation_database(database_id: new_db_id, synced_property_name: new_synced_property_name)
→replace_relation_data_source(data_source_id: new_ds_id, synced_property_name: new_synced_property_name)
おわりに
一通りのテストは通っているのですが、テスト抜けの部分でミスしている可能性があります。実際に使ってみて、おかしい部分などがあれば随時更新していきます。今回、Database に関するメソッドは全部削除してしまったのですが、データソースが一つしかない場合に、後方互換性を考えて、これまでの query_database などを delegate してもいいのかもしれないとも思いました。要望が多いようであれば、考えようかと思います。