public
Description: A pure Ruby library to represent SQL queries with a syntax tree for inspection and modification.
Homepage: http://wiki.github.com/wvanbergen/sql_tree
Clone URL: git://github.com/wvanbergen/sql_tree.git
name age message
file .gitignore Sun Oct 11 01:59:30 -0700 2009 Added /doc directory to .gitignore [wvanbergen]
file LICENSE Wed Oct 07 19:58:25 -0700 2009 Added MIT LICSENSE file. [wvanbergen]
file README.rdoc Tue Oct 13 03:01:42 -0700 2009 Added rdoc.info API documentation link to README [wvanbergen]
file Rakefile Fri Oct 09 06:25:32 -0700 2009 Whitespace fixes [wvanbergen]
directory lib/ Sat Oct 17 03:48:05 -0700 2009 DRY up comma separated list parsing. [wvanbergen]
directory spec/ Sat Oct 17 03:48:05 -0700 2009 DRY up comma separated list parsing. [wvanbergen]
file sql_tree.gemspec Sat Oct 17 04:08:44 -0700 2009 Released sql_tree gem version 0.1.1 [wvanbergen]
directory tasks/ Thu Oct 08 19:08:19 -0700 2009 Updated gem release management tasks file to la... [wvanbergen]
README.rdoc

SQLTree

SQLTree is a pure Ruby library to represent SQL queries with a syntax tree for inspection and modification.

The library can parse an SQL query (a string) to represent the query using a syntax tree, and it can generate an SQL query from a syntax tree. The syntax tree ca be used to inspect to query, or to modify it.

This library is currently in the early stages. This means that the API is not yet stable and not all SQL constructs are implemented yet.

Installation

The SQLTree library is distributed as a gem on Gemcutter.org. To install:

  gem install sql_tree --source http://gemcutter.org

Usage

Consider the following example:

  require 'sql_tree'
  tree  = SQLTree["SELECT * FROM table WHERE field = 'value'"]
  where = SQLTree::Node::Expression["username = 'user' AND password = MD5('$secret')"]
  tree.where = where # replace WHERE expression
  puts tree.to_sql
  # "SELECT * FROM "table" WHERE (("username" = 'user') AND ("password" = MD5('$secret')))"

Additional information

This library is written by Willem van Bergen and is MIT licensed (see the LICENSE file).