Module: ArJdbc::MsSQL::LimitHelpers

Included in:
ArJdbc::MsSQL
Defined in:
lib/arjdbc/mssql/limit_helpers.rb

Defined Under Namespace

Modules: SqlServer2000AddLimitOffset, SqlServer2000ReplaceLimitOffset, SqlServerAddLimitOffset, SqlServerReplaceLimitOffset

Class Method Summary collapse

Class Method Details

.get_primary_key(order, table_name) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/arjdbc/mssql/limit_helpers.rb', line 15

def get_primary_key(order, table_name)
  if order =~ /(\w*id\w*)/i
    $1
  else
    table_name[/\[+(.*)\]+/i]

    # rails 2 vs rails 3
    if ActiveRecord::VERSION::MAJOR >= 3
      models = ActiveRecord::Base.descendants
    else
      models = ActiveRecord::Base.send(:subclasses)
    end

    model = models.select{|model| model.table_name == $1}.first
    if model then
      model.primary_key
    else
     'id'
    end
  end
end

.get_table_name(sql) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'lib/arjdbc/mssql/limit_helpers.rb', line 5

def get_table_name(sql)
  if sql =~ /^\s*insert\s+into\s+([^\(\s,]+)\s*|^\s*update\s+([^\(\s,]+)\s*/i
    $1
  elsif sql =~ /\bfrom\s+([^\(\s,]+)\s*/i
    $1
  else
    nil
  end
end