NotionRubyMapping v3.0.0 リリース : hkob の雑記録 (260)

はじめに

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_idrelation_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 してもいいのかもしれないとも思いました。要望が多いようであれば、考えようかと思います。

hkob.notion.site