Class: MiniSql::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/mini_sql/builder.rb

Constant Summary collapse

PREDEFINED_SQL_LITERALS =
(literals1 | literals2).to_set

Instance Method Summary collapse

Constructor Details

#initialize(connection, template) ⇒ Builder

Returns a new instance of Builder.



5
6
7
8
9
10
11
12
# File 'lib/mini_sql/builder.rb', line 5

def initialize(connection, template)
  @args = {}
  @sql = template
  @sections = {}
  @connection = connection
  @count_variables = 1
  @is_prepared = false
end

Instance Method Details

#prepared(condition = true) ⇒ Object



68
69
70
71
72
# File 'lib/mini_sql/builder.rb', line 68

def prepared(condition = true)
  @is_prepared = condition

  self
end

#query_decorator(decorator, hash_args = nil) ⇒ Object



64
65
66
# File 'lib/mini_sql/builder.rb', line 64

def query_decorator(decorator, hash_args = nil)
  connection_switcher.query_decorator(decorator, parametrized_sql, union_parameters(hash_args))
end

#sql_literal(literals) ⇒ Object



46
47
48
49
50
51
52
53
54
# File 'lib/mini_sql/builder.rb', line 46

def sql_literal(literals)
  literals.each do |name, part_sql|
    if PREDEFINED_SQL_LITERALS.include?(name)
      raise "/*#{name}*/ is predefined, use method `.#{name}` instead `sql_literal`"
    end
    @sections[name] = part_sql.is_a?(::MiniSql::Builder) ? part_sql.to_sql : part_sql
  end
  self
end

#to_sql(hash_args = nil) ⇒ Object



74
75
76
# File 'lib/mini_sql/builder.rb', line 74

def to_sql(hash_args = nil)
  @connection.param_encoder.encode(parametrized_sql, union_parameters(hash_args))
end