Regal: An SQL relational algebra builder
Jacob Carlborg via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Thu May 15 23:12:33 PDT 2014
On 16/05/14 02:29, Dylan Knutson wrote:
> Hi all,
>
> I'd like to announce the initial version of Regal, an SQL relational
> algebra builder for D. It's intended as a backbone for a relational
> database ORM, in line with how Arel works with Rails' ActiveRecord, but
> nearly any project that generates SQL dynamically can benefit from it.
> The goal of the library is to make programmatically generating queries
> simple (and more robust than simple string concatenation), and to be
> database agnostic (it's very easy to write database specific printers
> for a Regal AST).
>
> There are extensive examples available in the Readme about how to use
> the library, from generating very simple queries (SELECT * FROM users)
> to multiple chained joins and nested constraints. Here's an example from
> the documentation: finding a user with ID 1:
>
> ```
> auto users = new Table(
> "users", // table name
> "id", // the rest are columns
> "name",
> "created_at",
> "updated_at");
Does this need to be a class, can it be a struct instead?
> // SELECT * FROM users WHERE users.id = 1 LIMIT 1
> users
> .where(users.id.eq(1))
> .limit(1)
> .project(new Sql("*"))
> .to_sql
> ```
Why is 'new Sql("*")' needed? If you need to have a specific type, could
it be a struct instead?
> The library can be found at: https://github.com/dymk/regal
> And the dub package: http://code.dlang.org/packages/regal
This all looks pretty nice :). Does it work at compile time?
--
/Jacob Carlborg
More information about the Digitalmars-d-announce
mailing list