From 3be7b97516188e0603f03d09b79726b6f93c2f61 Mon Sep 17 00:00:00 2001 From: Matt Date: Wed, 26 Aug 2026 10:53:41 +0200 Subject: [PATCH 1/2] fix(datasource-active-record): map inet/cidr/macaddr(8) to String Postgres inet/cidr/macaddr/macaddr8 columns fell through to the unknown-type fallback, logging a misleading INFO message on every schema generation even though the String fallback was already correct. Mirrors the existing citext/hstore/jsonb handling. Fixes #372 --- .../parser/column.rb | 4 ++++ .../parser/column_spec.rb | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/parser/column.rb b/packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/parser/column.rb index 59e578d2a..c04576490 100644 --- a/packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/parser/column.rb +++ b/packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/parser/column.rb @@ -17,6 +17,10 @@ module Column string: 'String', text: 'String', citext: 'String', + inet: 'String', + cidr: 'String', + macaddr: 'String', + macaddr8: 'String', time: 'Time', uuid: 'Uuid', binary: 'Binary' diff --git a/packages/forest_admin_datasource_active_record/spec/lib/forest_admin_datasource_active_record/parser/column_spec.rb b/packages/forest_admin_datasource_active_record/spec/lib/forest_admin_datasource_active_record/parser/column_spec.rb index 32ccbe9b3..582e9cde5 100644 --- a/packages/forest_admin_datasource_active_record/spec/lib/forest_admin_datasource_active_record/parser/column_spec.rb +++ b/packages/forest_admin_datasource_active_record/spec/lib/forest_admin_datasource_active_record/parser/column_spec.rb @@ -56,6 +56,21 @@ module Parser expect(dummy_class.get_column_type(User, column)).to eq ['Number'] end + + %i[inet cidr macaddr macaddr8].each do |pg_type| + it "maps Postgres #{pg_type} columns to String without logging an unknown-type message" do + logger = instance_double(Logger, log: nil) + allow(ForestAdminAgent::Facades::Container).to receive(:logger).and_return(logger) + column = instance_double( + ActiveRecord::ConnectionAdapters::SQLite3::Column, + name: 'address', + type: pg_type + ) + + expect(dummy_class.get_column_type(User, column)).to eq 'String' + expect(logger).not_to have_received(:log) + end + end end describe 'get_enum_values' do From c65ba850c4b499b29744f78a214fa5c1a3bf9392 Mon Sep 17 00:00:00 2001 From: Matt Date: Wed, 26 Aug 2026 14:28:49 +0200 Subject: [PATCH 2/2] fix(datasource-active-record): drop the unreachable macaddr8 entry ActiveRecord's Postgres adapter never registers macaddr8: column.type comes back nil for a real macaddr8 column (verified against the installed activerecord gem), so TYPES[:macaddr8] could never be hit. It still fell back to String via the unknown-type branch either way -- same runtime behavior as before this fix, just with a TYPES entry that falsely implied the case was handled. Found by @christophebrun-forest in review on #377. inet/cidr/macaddr are confirmed registered and unaffected. --- .../lib/forest_admin_datasource_active_record/parser/column.rb | 1 - .../forest_admin_datasource_active_record/parser/column_spec.rb | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/parser/column.rb b/packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/parser/column.rb index c04576490..aeee05f41 100644 --- a/packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/parser/column.rb +++ b/packages/forest_admin_datasource_active_record/lib/forest_admin_datasource_active_record/parser/column.rb @@ -20,7 +20,6 @@ module Column inet: 'String', cidr: 'String', macaddr: 'String', - macaddr8: 'String', time: 'Time', uuid: 'Uuid', binary: 'Binary' diff --git a/packages/forest_admin_datasource_active_record/spec/lib/forest_admin_datasource_active_record/parser/column_spec.rb b/packages/forest_admin_datasource_active_record/spec/lib/forest_admin_datasource_active_record/parser/column_spec.rb index 582e9cde5..e87438827 100644 --- a/packages/forest_admin_datasource_active_record/spec/lib/forest_admin_datasource_active_record/parser/column_spec.rb +++ b/packages/forest_admin_datasource_active_record/spec/lib/forest_admin_datasource_active_record/parser/column_spec.rb @@ -57,7 +57,7 @@ module Parser expect(dummy_class.get_column_type(User, column)).to eq ['Number'] end - %i[inet cidr macaddr macaddr8].each do |pg_type| + %i[inet cidr macaddr].each do |pg_type| it "maps Postgres #{pg_type} columns to String without logging an unknown-type message" do logger = instance_double(Logger, log: nil) allow(ForestAdminAgent::Facades::Container).to receive(:logger).and_return(logger)