aboutsummaryrefslogtreecommitdiffstats
path: root/docs/03_natural_syntax.mkd
blob: a91c5b880297503a82b76e2b522e5ba160f4347a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## Natural Syntax

**work-in-progress**

The original JaQu source offers partial support for Java expressions in *where* clauses.

This works by decompiling a Java expression, at runtime, to an SQL condition.  The expression is written as an anonymous inner class implementation of the `com.iciql.Filter` interface.
A proof-of-concept decompiler is included, but is incomplete.

The proposed syntax is:
%BEGINCODE%
long count = db.from(co).
    where(new Filter() { public boolean where() {
        return co.id == x
            && co.name.equals(name)
            && co.value == new BigDecimal("1")
            && co.amount == 1L
            && co.birthday.before(new java.util.Date())
            && co.created.before(java.sql.Timestamp.valueOf("2005-05-05 05:05:05"))
            && co.time.before(java.sql.Time.valueOf("23:23:23"));
        }
    }).selectCount();
%ENDCODE%