Module: Sqlcomposer::Cli
- Defined in:
- lib/sqlcomposer/cli.rb
Class Method Summary collapse
- .compose_sql(raw_sql, params) ⇒ Object
- .format_sql(sql, color) ⇒ Object
- .parse_params(raw_sql, line) ⇒ Object
- .parse_prepared_sql(line) ⇒ Object
- .quote_param(param) ⇒ Object
- .start ⇒ Object
Class Method Details
.compose_sql(raw_sql, params) ⇒ Object
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/sqlcomposer/cli.rb', line 36 def compose_sql(raw_sql, params) return raw_sql if params.nil? || params.empty? sql = raw_sql.dup sql.scan(/\?/).each_with_index do |place_holder, idx| sql.sub!(/\?/) do |_| quote_param(params[idx]) end end sql end |
.format_sql(sql, color) ⇒ Object
56 57 58 |
# File 'lib/sqlcomposer/cli.rb', line 56 def format_sql(sql, color) Niceql::Prettifier.prettify_sql(sql + ';', color) end |
.parse_params(raw_sql, line) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/sqlcomposer/cli.rb', line 28 def parse_params(raw_sql, line) return [] unless raw_sql raw_params = line.split(/=>\s+Parameters:/).last.chomp.strip raw_params.split(/(?<=\)), /).map do |raw_param| raw_param.strip.scan(/([^()]+)\((\w+?)\)/).first end end |
.parse_prepared_sql(line) ⇒ Object
24 25 26 |
# File 'lib/sqlcomposer/cli.rb', line 24 def parse_prepared_sql(line) line.split(/=>\s+Preparing:/).last.chomp end |
.quote_param(param) ⇒ Object
47 48 49 50 51 52 53 54 |
# File 'lib/sqlcomposer/cli.rb', line 47 def quote_param(param) value, type = param if %w[Integer Byte BigDecimal].include?(type) value else "'#{value}'" end end |
.start ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/sqlcomposer/cli.rb', line 6 def start prepared_sql = nil ARGF.each do |line| prepared_sql = parse_prepared_sql(line) if line =~ /=>\s+Preparing:/ params = parse_params(prepared_sql, line) if line =~ /=>\s+Parameters:/ if prepared_sql && params sql = compose_sql(prepared_sql, params) if $stdout.isatty puts format_sql(sql, true) else puts format_sql(sql, false) end puts "\n\n" prepared_sql = nil end end end |