Class: SqlStmt

Inherits:
Object
  • Object
show all
Defined in:
lib/sqlstmt/sqlstmt.rb,
lib/sqlstmt/build.rb

Overview

unless there is something better to return, methods return self so they can be chained together

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSqlStmt

Returns a new instance of SqlStmt.



19
20
21
# File 'lib/sqlstmt/sqlstmt.rb', line 19

def initialize
  @data = SqlStmtLib::SqlData.new
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



17
18
19
# File 'lib/sqlstmt/sqlstmt.rb', line 17

def data
  @data
end

Instance Method Details

#any_join(kwstr, ref, exprs) ⇒ Object



72
73
74
75
76
# File 'lib/sqlstmt/sqlstmt.rb', line 72

def any_join(kwstr, ref, exprs)
  tbl = include_table(ref)
  @data.joins << SqlStmtLib::SqlJoin.new(kwstr, tbl, "ON #{exprs.join(' AND ')}")
  return self
end

#delete(*tables) ⇒ Object



43
44
45
46
47
# File 'lib/sqlstmt/sqlstmt.rb', line 43

def delete(*tables)
  type('delete')
  @data.tables_to_delete = tables
  return self
end

#includes_table?(table_to_find) ⇒ Boolean

Returns:

  • (Boolean)


78
79
80
# File 'lib/sqlstmt/sqlstmt.rb', line 78

def includes_table?(table_to_find)
  return @data.table_ids.include?(table_to_find)
end

#initialize_copy(_orig) ⇒ Object



23
24
25
26
27
# File 'lib/sqlstmt/sqlstmt.rb', line 23

def initialize_copy(_orig)
  # I don't really know why this is necessary, but it seems to be
  super
  @data = @data.dup
end

#insertObject



39
40
41
# File 'lib/sqlstmt/sqlstmt.rb', line 39

def insert
  return type('insert')
end

#join(table, *exprs) ⇒ Object



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

def join(table, *exprs)
  return any_join('JOIN', table, exprs)
end

#left_join(table, *exprs) ⇒ Object



68
69
70
# File 'lib/sqlstmt/sqlstmt.rb', line 68

def left_join(table, *exprs)
  return any_join('LEFT JOIN', table, exprs)
end

#no_whereObject

where



84
85
86
87
# File 'lib/sqlstmt/sqlstmt.rb', line 84

def no_where
  @data.where_behavior = :exclude
  return self
end

#optional_whereObject



89
90
91
92
# File 'lib/sqlstmt/sqlstmt.rb', line 89

def optional_where
  @data.where_behavior = :optional
  return self
end

#selectObject

pick statement type



31
32
33
# File 'lib/sqlstmt/sqlstmt.rb', line 31

def select
  return type('select')
end

#set(field, value) ⇒ Object

nil can be passed in for the field, in which case it won’t be added this is only for the special case of INSERT INTO table SELECT b.* FROM blah b WHERE … where there are no specific fields listed



99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/sqlstmt/sqlstmt.rb', line 99

def set(field, value)
  if @data.set_fields.include?(field)
    raise SqlStmtError, "trying to set field #{field} again"
  end

  if field
    @data.set_fields << field
  end
  value = value.is_a?(String) ? value : value.to_sql
  @data.set_values << value
  return self
end

#setq(field, value) ⇒ Object



112
113
114
# File 'lib/sqlstmt/sqlstmt.rb', line 112

def setq(field, value)
  return set(field, value.to_sql)
end

#table(ref, use_index = nil) ⇒ Object

tables & joins



59
60
61
62
# File 'lib/sqlstmt/sqlstmt.rb', line 59

def table(ref, use_index = nil)
  @data.tables << include_table(ref, use_index)
  return self
end

#to_sObject Also known as: to_sql



5
6
7
8
# File 'lib/sqlstmt/build.rb', line 5

def to_s
  SqlStmtLib::MysqlChecker.new(@data).run
  return SqlStmtLib::MysqlBuilder.new(@data).build_stmt
end

#type(stmt_type) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/sqlstmt/sqlstmt.rb', line 49

def type(stmt_type)
  if @data.stmt_type
    raise SqlStmtError, "statement type already set to #{@data.stmt_type}"
  end
  @data.stmt_type = stmt_type
  return self
end

#updateObject



35
36
37
# File 'lib/sqlstmt/sqlstmt.rb', line 35

def update
  return type('update')
end