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, all 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

#add_row(row) ⇒ Object

used with INSERT VALUES statements only



150
151
152
# File 'lib/sqlstmt/sqlstmt.rb', line 150

def add_row(row)
  @data.rows << row
end

#delete(*tables) ⇒ Object



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

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

#distinctObject

less commonly used methods



156
157
158
159
# File 'lib/sqlstmt/sqlstmt.rb', line 156

def distinct
  @data.distinct = true
  return self
end

#fieldsObject

temporary transition methods



28
29
30
# File 'lib/sqlstmt/sqlstmt.rb', line 28

def fields
  return @data.fields
end

#get(*exprs) ⇒ Object



96
97
98
99
100
# File 'lib/sqlstmt/sqlstmt.rb', line 96

def get(*exprs)
  @data.fields.concat(exprs)
  @data.called_get = true
  return self
end

#group_by(expr) ⇒ Object



118
119
120
121
# File 'lib/sqlstmt/sqlstmt.rb', line 118

def group_by(expr)
  @data.group_by = expr
  return self
end

#having(*expr) ⇒ Object



133
134
135
136
# File 'lib/sqlstmt/sqlstmt.rb', line 133

def having(*expr)
  @data.having.concat(expr)
  return self
end

#ignoreObject



171
172
173
174
# File 'lib/sqlstmt/sqlstmt.rb', line 171

def ignore
  @data.ignore = 'IGNORE '
  return self
end

#includes_table?(table_to_find) ⇒ Boolean

methods to analyze what the statement contains

Returns:

  • (Boolean)


182
183
184
185
186
# File 'lib/sqlstmt/sqlstmt.rb', line 182

def includes_table?(table_to_find)
  retval = @data.tables.find { |table| (table.name == table_to_find) || (table.alias == table_to_find) }
  retval ||= @data.joins.find { |_, table, _| table_names_match?(table, table_to_find) }
  return retval
end

#initialize_copy(_orig) ⇒ Object



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

def initialize_copy(_orig)
  @data = @data.dup
end

#insertObject



54
55
56
# File 'lib/sqlstmt/sqlstmt.rb', line 54

def insert
  return set_statement_type('insert')
end

#into(into_table) ⇒ Object

used with INSERT statements only



144
145
146
147
# File 'lib/sqlstmt/sqlstmt.rb', line 144

def into(into_table)
  @data.into_table = into_table
  return self
end

#join(table, *exprs) ⇒ Object



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

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

#joinsObject



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

def joins
  return @data.joins
end

#left_join(table, *exprs) ⇒ Object



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

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

#limit(clause) ⇒ Object



128
129
130
131
# File 'lib/sqlstmt/sqlstmt.rb', line 128

def limit(clause)
  @data.limit = clause
  return self
end

#no_whereObject



86
87
88
89
# File 'lib/sqlstmt/sqlstmt.rb', line 86

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

#optional_whereObject



91
92
93
94
# File 'lib/sqlstmt/sqlstmt.rb', line 91

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

#order_by(expr) ⇒ Object



123
124
125
126
# File 'lib/sqlstmt/sqlstmt.rb', line 123

def order_by(expr)
  @data.order_by = expr
  return self
end

#outfile(str) ⇒ Object



176
177
178
179
# File 'lib/sqlstmt/sqlstmt.rb', line 176

def outfile(str)
  @data.outfile = " INTO OUTFILE #{str}"
  return self
end

#replaceObject



166
167
168
169
# File 'lib/sqlstmt/sqlstmt.rb', line 166

def replace
  @data.replace = true
  return self
end

#selectObject

pick statement type



46
47
48
# File 'lib/sqlstmt/sqlstmt.rb', line 46

def select
  return set_statement_type('select')
end

#set(field, value) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
# File 'lib/sqlstmt/sqlstmt.rb', line 102

def set(field, value)
  raise "trying to include field #{field} again" if @data.fields.include?(field)
  # this is to support the special case of INSERT INTO table SELECT * FROM ...
  # where * specified with no matching insert field list specified
  if field
    @data.fields << field
  end
  value = value.is_a?(String) ? value : value.to_sql
  @data.values << value
  return self
end

#setq(field, value) ⇒ Object



114
115
116
# File 'lib/sqlstmt/sqlstmt.rb', line 114

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

#straight_joinObject



161
162
163
164
# File 'lib/sqlstmt/sqlstmt.rb', line 161

def straight_join
  @data.straight_join = true
  return self
end

#table(table_str, use_index = nil) ⇒ Object

common operations



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

def table(table_str, use_index = nil)
  parts = table_str.split(' ')
  table_obj = SqlStmtLib::SqlTable.new(table_str, parts[0], parts[1], use_index)
  @data.tables << table_obj
  return self
end

#tablesObject



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

def tables
  return @data.tables
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

#updateObject



50
51
52
# File 'lib/sqlstmt/sqlstmt.rb', line 50

def update
  return set_statement_type('update')
end

#where(*expr) ⇒ Object



81
82
83
84
# File 'lib/sqlstmt/sqlstmt.rb', line 81

def where(*expr)
  @data.wheres.concat(expr)
  return self
end

#wheresObject



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

def wheres
  return @data.wheres
end

#with_rollupObject



138
139
140
141
# File 'lib/sqlstmt/sqlstmt.rb', line 138

def with_rollup
  @data.with_rollup = true
  return self
end