class PiiSafeSchema::PiiColumn

Attributes

column[R]
suggestion[R]
table[R]

Public Class Methods

all() click to toggle source
# File lib/pii_safe_schema/pii_column.rb, line 13
def all
  find_and_create
end
from_column_name(table:, column:, suggestion:) click to toggle source
# File lib/pii_safe_schema/pii_column.rb, line 17
def from_column_name(table:, column:, suggestion:)
  activerecord_column = connection.columns(table.to_s).find { |c| c.name == column.to_s }

  unless activerecord_column
    raise InvalidColumnError, "column \"#{column}\" does not exist for table \"#{table}\""
  end

  new(table: table, column: activerecord_column, suggestion: suggestion)
end
new(table:, column:, suggestion:) click to toggle source
# File lib/pii_safe_schema/pii_column.rb, line 6
def initialize(table:, column:, suggestion:)
  @table = table.to_sym
  @column = column
  @suggestion = suggestion
end

Private Class Methods

connection() click to toggle source
# File lib/pii_safe_schema/pii_column.rb, line 40
def connection
  ActiveRecord::Base.connection
end
find_and_create() click to toggle source
# File lib/pii_safe_schema/pii_column.rb, line 29
def find_and_create
  relevant_tables.map do |table|
    connection.columns(table).map do |column|
      next if ignored_column?(table, column)

      rec = recommended_comment(column)
      rec ? new(table: table, column: column, suggestion: rec) : nil
    end.compact
  end.compact.flatten
end
ignored_column?(table, column) click to toggle source
# File lib/pii_safe_schema/pii_column.rb, line 48
def ignored_column?(table, column)
  PiiSafeSchema.configuration.
    ignore_columns[table.to_sym]&.
               include?(column.name.to_sym)
end
relevant_tables() click to toggle source
# File lib/pii_safe_schema/pii_column.rb, line 44
def relevant_tables
  connection.tables - PiiSafeSchema.configuration.ignore_tables
end