class ActiveRecordUtils::Browser::Connection

Attributes

connection[R]
key[R]

Public Class Methods

new( connection, key ) click to toggle source
# File lib/activerecord/utils/browser.rb, line 60
def initialize( connection, key )
  @connection = connection
  @key        = key
end

Public Instance Methods

class_name() click to toggle source
# File lib/activerecord/utils/browser.rb, line 71
def class_name
  @connection.class.name
end
fetch_table_column_defs( name ) click to toggle source
# File lib/activerecord/utils/browser.rb, line 109
def fetch_table_column_defs( name )
  ### fix/todo: add reference to table_def
  @connection.columns( name ).map do |col|
    Column.new( col.name, col.sql_type, col.default, col.null )
  end
end
fetch_table_defs() click to toggle source
# File lib/activerecord/utils/browser.rb, line 103
def fetch_table_defs
  @connection.tables.sort.map do |name|
    Table.new( self, name )
  end
end
fetch_table_select_all( name, opts={} ) click to toggle source
# File lib/activerecord/utils/browser.rb, line 117
def fetch_table_select_all( name, opts={} )
  limit =  (opts[:limit] || 33).to_i # 33 records limit/per page (for now default)
  limit =  33   if limit == 0   # use default page size if limit 0 (from not a number para)
  
  offset = (opts[:offset] || 0).to_i

  sql = "select * from #{name} limit #{limit}"

  sql << " offset #{offset}"   if offset > 0     # add offset if present (e.g greater zero)

  # page = (opts[:page] || 1 ).try(:to_i)
  # fields = opts[:fields] || nil
 
  # rez = { :fields => fields }
  # if sql =~ /\s*select/i && per_page > 0
  #  rez[:count] = select_value("select count(*) from (#{sql}) as t").to_i
  #  rez[:pages] = (rez[:count].to_f / per_page).ceil
  #  sql = "select * from (#{sql}) as t"
  #  add_limit_offset!( sql,
  #                        :limit => per_page,
  #                        :offset => per_page * (page - 1))
  # end

  result = {}
  result[ :sql  ] = sql    # note: lets also always add sql query to result too
  result[ :rows ] = select_all( sql )

  #    unless rez[:rows].blank?
  #      rez[:fields] ||= []
  #      rez[:fields].concat( self.sort_fields(rez[:rows].first.keys) - rez[:fields] )
  #    end

  Result.new( result )
rescue StandardError => ex
  Result.new( error: ex )
end
table( name ) click to toggle source
# File lib/activerecord/utils/browser.rb, line 84
def table( name )
  tables.find { |t| t.name.downcase == name.downcase }
end
table_columns( name ) click to toggle source

getting list of column definitions and order them to be more human readable

# File lib/activerecord/utils/browser.rb, line 90
def table_columns( name )
  cols = fetch_table_column_defs( name )
  ### fix/to be done
  # cols.sort_by{|col|
  #    [
  #      fields_to_head.index(col.name) || 1e6,
  #      -(fields_to_tail.index(col.name) || 1e6),
  #      col.name
  #    ]
  #  }
  cols
end
tables() click to toggle source

delegate :quote_table_name, :quote_column_name, :quote,

:update, :insert, :delete,
:add_limit_offset!,
:to => :connection
# File lib/activerecord/utils/browser.rb, line 80
def tables
  @tables ||= fetch_table_defs
end