Class: SqlStmtLib::MysqlChecker

Inherits:
Object
  • Object
show all
Defined in:
lib/sqlstmt/mysql/check.rb

Instance Method Summary collapse

Constructor Details

#initialize(data) ⇒ MysqlChecker

Returns a new instance of MysqlChecker.



7
8
9
# File 'lib/sqlstmt/mysql/check.rb', line 7

def initialize(data)
  @data = data
end

Instance Method Details

#check_basicsObject



17
18
19
20
21
22
23
24
# File 'lib/sqlstmt/mysql/check.rb', line 17

def check_basics
  if !@data.stmt_type
    raise SqlStmtError, "must call :select, :update, :insert or :delete"
  end
  if @data.tables.empty?
    raise SqlStmtError, "must call :table"
  end
end

#check_statement_type_specificObject



34
35
36
37
38
39
40
41
# File 'lib/sqlstmt/mysql/check.rb', line 34

def check_statement_type_specific
  method_name = "check_stmt_#{@data.stmt_type}"
  send(method_name)

  if @data.stmt_type != 'select'
    raise SqlStmtError, "must not call :get on #{@data.stmt_type} statement" if !@data.gets.empty?
  end
end

#check_stmt_deleteObject

Raises:



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

def check_stmt_delete
  raise SqlStmtError, "must not call :set on delete statement" if !@data.set_values.empty?
  if @data.tables_to_delete.empty? && ((@data.tables.size + @data.joins.size) > 1)
    raise SqlStmtError, "must specify tables to delete when including multiple tables"
  end
end

#check_stmt_insertObject

Raises:



52
53
54
55
# File 'lib/sqlstmt/mysql/check.rb', line 52

def check_stmt_insert
  raise SqlStmtError, "must call :set on insert statement" if @data.set_values.empty?
  raise SqlStmtError, "must call :into on insert statement" if @data.into.nil?
end

#check_stmt_selectObject

Raises:



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

def check_stmt_select
  raise SqlStmtError, "must call :get on select statement" if @data.gets.empty?
  raise SqlStmtError, "must not call :set on select statement" if !@data.set_values.empty?
end

#check_stmt_updateObject

Raises:



48
49
50
# File 'lib/sqlstmt/mysql/check.rb', line 48

def check_stmt_update
  raise SqlStmtError, "must call :set on update statement" if @data.set_values.empty?
end

#check_whereObject



26
27
28
29
30
31
32
# File 'lib/sqlstmt/mysql/check.rb', line 26

def check_where
  if (@data.where_behavior == :require) && @data.wheres.empty?
    raise SqlStmtError, "must call :where, :no_where, or :optional_where"
  elsif (@data.where_behavior == :exclude) && !@data.wheres.empty?
    raise SqlStmtError, ":where and :no_where must not both be called, consider :optional_where instead"
  end
end

#runObject



11
12
13
14
15
# File 'lib/sqlstmt/mysql/check.rb', line 11

def run
  check_basics
  check_where
  check_statement_type_specific
end