class YeetDb::ArTable

Attributes

table_name[RW]
tables[RW]

Public Class Methods

new(table_name:, tables:) click to toggle source
# File lib/yeet_db/ar_table.rb, line 5
def initialize(table_name:, tables:)
  @table_name = table_name
  @tables = tables
end

Public Instance Methods

missing_keys() click to toggle source
# File lib/yeet_db/ar_table.rb, line 10
def missing_keys
  missing_keys_array = []
  columns.each do |column_name|
    column = ArColumn.new(column_name: column_name, table_name: table_name, tables: tables)
    next unless column.is_association?

    unless column.model
      puts "YeetDb - cannot find model for #{table_name} . #{column_name.name} | #{column&.association_table_name}"
    end

    unless column.association
      puts "YeetDb - cannot find association for #{table_name} . #{column_name.name} | #{column&.association_table_name}"
    end

    next if column.polymorphic_association?
    next if column.foreign_key_exists?
    next if column.association_table_name.blank?

    if VerifyData.new(column: column).orphaned_rows?
      puts "YeetDb - orphaned rows. Skipping #{table_name} . #{column_name.name} | #{column&.association_table_name}"
      next
    end

    foreign_key = ForeignKey.new(table_a: table_name,
                                 table_b: column&.association_table_name,
                                 column: column_name.name)
    missing_keys_array.push(foreign_key)
  end
  missing_keys_array
end

Private Instance Methods

columns() click to toggle source
# File lib/yeet_db/ar_table.rb, line 43
def columns
  ActiveRecord::Base.connection.columns(table_name)
end