26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/dataduck/table.rb', line 26
def self.source(source_name, source_table_or_query = nil, source_columns = nil)
self.sources ||= []
source_spec = {}
if source_table_or_query.respond_to?(:to_s) && source_table_or_query.to_s.downcase.include?('select ')
source_spec = {query: source_table_or_query}
elsif source_columns.nil? && source_table_or_query.respond_to?(:each)
source_spec = {columns: source_table_or_query, table_name: DataDuck::Util.camelcase_to_underscore(self.name)}
else
source_spec = {columns: source_columns, table_name: source_table_or_query.to_s}
end
source_spec[:source] = DataDuck::Source.source(source_name)
self.sources << source_spec
end
|