A library for online SQL formatting
Ruby
Latest commit 7fa3a94 Apr 30, 2012 @mdesantis setted gem homepage
Permalink
Failed to load latest commit information.
examples first commit Apr 29, 2012
lib
spec first commit Apr 29, 2012
.gitignore preparing for gem releasing Apr 29, 2012
.yardopts first commit Apr 29, 2012
CHANGELOG added changelog and fixed some documentation typos Apr 29, 2012
Gemfile preparing for gem releasing Apr 29, 2012
Gemfile.lock preparing for gem releasing Apr 29, 2012
LICENSE first commit Apr 29, 2012
Manifest Manifest generated Apr 29, 2012
README.markdown fixed link Apr 29, 2012
Rakefile setted gem homepage Apr 29, 2012

README.markdown

SqlFormatterWebInterface

Description

This library lets you write this:

sql = <<-SQL
         select user_id, count(*) as how_many from bboard where 
         not exists (select 1 from bboard_authorized_maintainers bam 
         where bam.user_id = bboard.user_id) and posting_time + 60 > sysdate 
         group by user_id order by how_many desc;
         SQL
SqlFormatterWebInterface.format(sql) #=>
# SELECT user_id,
#        count(*) AS how_many
# FROM bboard
# WHERE NOT EXISTS
#     (SELECT 1
#      FROM bboard_authorized_maintainers bam
#      WHERE bam.user_id = bboard.user_id)
#   AND posting_time + 60 > sysdate
# GROUP BY user_id
# ORDER BY how_many DESC;

or this:

sql = <<-SQL
         insert into customer (id, name) values (1, 'John');
         insert into customer (id, name) values (2, 'Jack');
         insert into customer (id, name) values (3, 'Jane');
         insert into customer (id, name) values (4, 'Jim');
         insert into customer (id, name) values (5, 'Jerry');
         insert into customer (id, name) values (1, 'Joe');
         SQL
SqlFormatterWebInterface.format(sql) #=>
# INSERT INTO customer (id, name)
# VALUES (1,
#         'John');
# 
# INSERT INTO customer (id, name)
# VALUES (2,
#         'Jack');
# 
# INSERT INTO customer (id, name)
# VALUES (3,
#         'Jane');
# 
# INSERT INTO customer (id, name)
# VALUES (4,
#         'Jim');
# 
# INSERT INTO customer (id, name)
# VALUES (5,
#         'Jerry');
# 
# INSERT INTO customer (id, name)
# VALUES (1,
#         'Joe');

or even this:

require 'sql_formatter_web_interface/to_formatted_sql'
'select * from foo join bar on val1 = val2 where id = 123;'.to_formatted_sql(:keyword_case => 'capitalize') #=>
# Select *
# From foo
# Join bar On val1 = val2
# Where id = 123;

Formatting happens making a request to an online SQL formatting service (http://sqlformat.appspot.com/format/ is the only supported at the moment).

Installation

gem install sql_formatter_web_interface

In your Gemfile:

gem 'sql_formatter_web_interface'

Or, if you want to use String#to_formatted_sql:

gem 'sql_formatter_web_interface', :require => 'sql_formatter_web_interface/to_formatted_sql'

Usage

You can use SqlFormatterWebInterface::format(sql, options) or either String#to_formatted_sql(options), where options is an hash with the options supported by the web service (see http://sqlformat.appspot.com/api/)

License

MIT (see LICENSE)