class Db2Query::Definitions
Attributes
types[RW]
types_map[RW]
Public Class Methods
new(types_map)
click to toggle source
# File lib/db2_query/definitions.rb, line 7 def initialize(types_map) @types_map = types_map describe initialize_types end
Public Instance Methods
describe()
click to toggle source
# File lib/db2_query/definitions.rb, line 13 def describe raise Db2Query::Error, "Please describe query definitions at #{self.class.name}" end
lookup(query_name)
click to toggle source
# File lib/db2_query/definitions.rb, line 27 def lookup(query_name) queries.fetch(query_name) rescue raise Db2Query::QueryDefinitionError.new(name, query_name) end
lookup_query(*args)
click to toggle source
# File lib/db2_query/definitions.rb, line 33 def lookup_query(*args) query_name, sql = query_definitions(args) lookup(query_name).tap do |query| query.define_sql(sql) end end
queries()
click to toggle source
# File lib/db2_query/definitions.rb, line 17 def queries @queries ||= {} end
query_definition(query_name) { |definition| ... }
click to toggle source
# File lib/db2_query/definitions.rb, line 21 def query_definition(query_name, &block) definition = Query.new(query_name) yield definition queries[query_name] = definition end
Private Instance Methods
data_type_instance(column_definition)
click to toggle source
# File lib/db2_query/definitions.rb, line 55 def data_type_instance(column_definition) data_type, options = column_definition klass = @types_map.fetch(data_type) new_data_type(klass, options) rescue raise Db2Query::Error, "Not supported `#{data_type}` data type" end
fetch_query_name(args)
click to toggle source
# File lib/db2_query/definitions.rb, line 63 def fetch_query_name(args) placeholder = args.pop placeholder.fetch(:query_name) rescue raise Db2Query::ImplementationError.new end
initialize_types()
click to toggle source
# File lib/db2_query/definitions.rb, line 41 def initialize_types queries.each do |query_name, definition| definition.columns.each do |column, col_def| definition.types.store(column, data_type_instance(col_def)) end end end
new_data_type(klass, options)
click to toggle source
# File lib/db2_query/definitions.rb, line 49 def new_data_type(klass, options) options.nil? ? klass.new : klass.new(**options) rescue Exception => e raise Db2Query::Error, e.message end
query_definitions(args)
click to toggle source
# File lib/db2_query/definitions.rb, line 70 def query_definitions(args) case args.first when Array query_name = fetch_query_name(args.first) [query_name, args.last] else args end end