=============
This lines mean the same:
User.smql :self => {:id => 1}
User.smql :id => 1
User.smql 'self.id' => 1
User.smql 'self.self.self.self.id' => 1
self is like a reflection to itself.
Very userful if you need the new disjunction:
User.smql :self => [{:surname => 'Mueller', :givenname => 'Michael'}, {:givenname => 'Horst', :surname => 'Schlemmer'}], :firm => {:name => 'Hotel an der Elbe'}
SmqlToAR::Column
----------------
Rejects every `self`, so it is really like no self,
but you use `'self'` as like as a simple reflection.
You can ask, if it is self via Column#self?
SmqlToAR::QueryBuilder
======================
joins: The old `#join`. Renames because SmqlToAR::And and SmqlToAR::Or which has Array#join,
so we cannot delegate `#join` to the QueryBuilder.
`#where`
--------
Now only one argument! Needed for SmqlToAR::And and SmqlToAR::Or.
`#build` will generates LEFT OUTER JOINS now. Needed for disjunctions.
The most queries will work like before.
Problems:
User.smql :articles => {}
Before it will return all users with articles, now it will return also users without articles.
If you want to have only all users with articles, you ask:
User.smql :articles => {:id => true}
Will fail if id IS NULL, but this should not happen. ;)
`SmqlToAR::And` and `SmqlToAR::Or`
==================================
`SmqlToAR::QueryBuilder`-proxies. QueryBuilder let them build where-clauses.
And will will produce a conjunction and Or a disjunction of course.
They delegates all QueryBuilder-methods to QueryBuilder.
Only `#where` will stored local and `#build` will do it partial.
They have the same superclass: `SmqlToAR::SubBuilder`.
The small changes
=================
* `SmqlToAR.reload_library`: Reloads SmqlToAR-lib. Useful while development.
* `SmqlToAR::ConditionTypes#conditions`: Return all Conditions. `#try_parse` uses it.
* Some classes have a new `#inspect`.
* `SmqlToAR::ConditionTypes#Exists` / `NotExists`:
`{:id => true}` / `{:id => false}`:
This object has setted an id or not? `#id` must exists as column of course!
Uses `IS NOT NULL` and `IS NULL`.