Class: SqlStmtLib::MysqlChecker
- Inherits:
-
Object
- Object
- SqlStmtLib::MysqlChecker
- Defined in:
- lib/sqlstmt/mysql/check.rb
Instance Method Summary collapse
- #check_basics ⇒ Object
- #check_statement_type_specific ⇒ Object
- #check_stmt_delete ⇒ Object
- #check_stmt_insert ⇒ Object
- #check_stmt_select ⇒ Object
- #check_stmt_update ⇒ Object
- #check_where ⇒ Object
-
#initialize(data) ⇒ MysqlChecker
constructor
A new instance of MysqlChecker.
- #run ⇒ Object
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_basics ⇒ Object
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_specific ⇒ Object
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_delete ⇒ Object
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_insert ⇒ Object
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_select ⇒ Object
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_update ⇒ Object
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_where ⇒ Object
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 |
#run ⇒ Object
11 12 13 14 15 |
# File 'lib/sqlstmt/mysql/check.rb', line 11 def run check_basics check_where check_statement_type_specific end |