Method: ActionCost::SqlParser#parse

Defined in:
lib/action_cost/sql_parser.rb

#parseObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/action_cost/sql_parser.rb', line 13

def parse
  if @sql =~ /^\s*(\w+)/
    op = $1.downcase
    unless VALID_OPERATIONS.include?(op)
      Rails.logger.error "action_cost: unknown operation [#{op}]"
      @invalid = true
      return false
    end
    @operation = op
  else
    Rails.logger.error "action_cost: could not parse [#{@sql}]"
    @invalid = true
    return false
  end

  case @operation
  when 'select' then parse_select
  when 'insert' then parse_insert
  when 'update' then parse_update
  when 'delete' then parse_delete
  end

  return !@invalid
end