module Db2Query::Core::ClassMethods
Attributes
definitions[R]
Public Instance Methods
define_query_definitions()
click to toggle source
# File lib/db2_query/core.rb, line 18 def define_query_definitions @definitions = new_definitions end
exec_query_result(query, args)
click to toggle source
# File lib/db2_query/core.rb, line 22 def exec_query_result(query, args) reset_id_when_required(query) connection.exec_query(query, args) end
fetch(sql, args = [])
click to toggle source
# File lib/db2_query/core.rb, line 49 def fetch(sql, args = []) query = definitions.lookup_query(args, sql) query.validate_select_query connection.exec_query(query, args) end
fetch_list(sql, args)
click to toggle source
# File lib/db2_query/core.rb, line 55 def fetch_list(sql, args) list = args.first fetch(sql_with_list(sql, list), args.drop(1)) end
initiation() { |self| ... }
click to toggle source
# File lib/db2_query/core.rb, line 14 def initiation yield(self) if block_given? end
query(*query_args)
click to toggle source
# File lib/db2_query/core.rb, line 27 def query(*query_args) if query_args[1].respond_to?(:call) query_name, body = query_args singleton_class.define_method(query_name) do |*args| body.call(args << { query_name: query_name }) end elsif query_args[0].is_a?(String) sql, query_args = [query_args.first.strip, query_args.drop(1)] query = raw_query(sql, query_args) connection.raw_query(query.db2_spec_sql, query.args) elsif query_args[1].is_a?(String) && query_args[1].strip.length > 0 query_name, sql = query_args query = definitions.lookup_query(query_name, sql.strip) singleton_class.define_method(query_name) do |*args| exec_query_result(query, args) end else raise Db2Query::QueryMethodError.new end end
Also aliased as: define
Private Instance Methods
define_sql_query(method_name)
click to toggle source
# File lib/db2_query/core.rb, line 81 def define_sql_query(method_name) sql_query_name = sql_query_symbol(method_name) sql_statement = allocate.method(sql_query_name).call define(method_name, sql_statement) end
method_missing(method_name, *args, &block)
click to toggle source
Calls superclass method
# File lib/db2_query/core.rb, line 87 def method_missing(method_name, *args, &block) if sql_query_method?(method_name) define_sql_query(method_name) method(method_name).call(*args) elsif method_name == :exec_query sql, args = [args.shift, args.first] query = definitions.lookup_query(args, sql) exec_query_result(query, args) else super end end
new_definitions()
click to toggle source
# File lib/db2_query/core.rb, line 61 def new_definitions definition_class = "Definitions::#{name}Definitions" Object.const_get(definition_class).new(field_types_map) rescue Exception => e raise Db2Query::Error, e.message end
raw_query(sql, args)
click to toggle source
# File lib/db2_query/core.rb, line 74 def raw_query(sql, args) Query.new.tap do |query| query.define_sql(sql) query.define_args(args) end end
reset_id_when_required(query)
click to toggle source
# File lib/db2_query/core.rb, line 68 def reset_id_when_required(query) if query.insert_sql? && !query.column_id.nil? connection.reset_id_sequence!(query.table_name) end end