Module: ForestAdminDatasourceSnowflake::Parser::Relation

Defined in:
lib/forest_admin_datasource_snowflake/parser/relation.rb

Constant Summary collapse

PK_TABLE_NAME_IDX =
3
PK_COLUMN_NAME_IDX =
4
FK_TABLE_NAME_IDX =
7
FK_COLUMN_NAME_IDX =
8
QUERY =
'SHOW IMPORTED KEYS IN SCHEMA'.freeze

Class Method Summary collapse

Class Method Details

.discover(datasource) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/forest_admin_datasource_snowflake/parser/relation.rb', line 13

def discover(datasource)
  rows = datasource.with_connection do |conn|
    stmt = conn.prepare(QUERY)
    begin
      stmt.execute
      stmt.fetch_all || []
    ensure
      stmt.drop
    end
  end

  rows.map do |row|
    {
      source_table: row[FK_TABLE_NAME_IDX],
      source_column: row[FK_COLUMN_NAME_IDX],
      target_table: row[PK_TABLE_NAME_IDX],
      target_column: row[PK_COLUMN_NAME_IDX]
    }
  end
end